OOP mit PHP 5(.5)

  • Heyho @ll,
    ich scheitere grad erfolgreich an der OO-Programmierung in PHP (bzw. allgemein OOP :rolleyes:). Die größte Schwierigkeit bereitet mir im Moment aber die Vererbung. Ich kriegs nicht gebacken :cursing:


    Mein Hauptproblem steht als Kommentar im Code


    riotapi.inc.php


    Abfrage sollte dann so laufen


    Ich will das halt so machen, da es für die API viele verschiedene Infos gibt, die alle eine andere URL ansprechen. ABER die Basis der URLs bleibt jedes Mal gleich.

  • einfach $this-> :D


    Du erbst mit der subclass die Eigenschaften (sofern nicht private).


    siehe Methode test()


    Würde noch was vorschlagen:
    da sich die class RiotApi nicht zu ändern scheint, würde ich diese static aufbauen.
    Und ich hab mir angelesen, dass man Eigenschaften nie direkt von einer anderen Stelle aus ansprechen sollte.
    Also innerhalb der gleichen Klasse : $this->eigenschaft
    aber von "extern" : $this->getEigenschaft()


    Somit kannst Du jeder Zeit die Rückgabewerte kontrollieren, wenn zB irgentwas neues hinzu kommt.
    Bsp:

  • Hey, danke für die schnelle Antwort. Ich war da einfach zu kompliziert und hab $elternklasse->attribut gemacht :)


    Jetzt klappt die grundlegende API-Abfrage schonmal. Hier ein Beispiel (mit Champs):


    riotapi.inc.php


    test.php


    Zwei Dateien im selben Ordner und unter XAMPP oder so ausführen.


    Allerdings bin ich noch nicht zufrieden, mit der Art, wie die URL generiert wird :( Hat da wer eine Lösung, wie man das noch verallgemeinern könnte ?(

  • vll in deiner RiotApi eine Methode:


    PHP
    1. protected function sendRequest($params = '?'/*, $this->Ext_Url könntest auch als parameter übergeben */){
    2. $url = $this->getExtURL($this->Ext_Url) . $params . '&api_key=' . $this->Api_Key;
    3. $response_json = file_get_contents($url);
    4. return json_decode($response_json, TRUE);
    5. }
  • $params = '?'
    wenn nix reingegeben wird, dann kommt sowas raus:


    ?&api_key=...



    EDIT: konnts nicht lassen :D
    (btw : eine Klasse pro File egtl)


    riotapi.inc.php