Daniel Petratsch: Auf Rückgabe-Objektmethode zugreifen?

Hallo!

Ich weiss das Thema hört sich eigenartig an, ist es aber nicht, mir ist nur leider kein besseres eingefallen :)
Ich habe 2 Klassen in PHP geschieben, die eine Klasse ist ein Containerobjekt zur Gruppenverwaltung von Benutzern.Die andere Klasse sind die Benutzergruppen selbst. Nun ist es so, dass der Container die gesamten Benutzergruppen verwaltet, also habe ich eine Funktion getGroupByID($id), die mir dann aus dem Container die dementsprechende Gruppe als Group Objekt zurückliefert.

Nun möchte ich aber direkt in einem Aufruf an die Objektmethoden des zurückgelieferten Group Objektes
zugreifen, jedoch gefällt das dem PHP Pareser nicht und er meldet sich mit einem schnöden Pares-Error.Der Aufruf schaut so aus:

echo $this->getGroupByID($_GET["id"])->getName();

mit Klammernsetzung funktionierts auch nicht:

echo ($this->getGroupByID($_GET["id"]))->getName();

Ich möchte das aber gerne in einem Schritt ansprechen können, ohne zuvor das zurückgegebene Objekt einer Variable zuweisen zu müssen, erspart Code und Performance. In Java hat's letztens funktioniert, deswegen fände ich es fein wenn es in PHP auch so gut funktionieren würde. Da ich aber nicht weiss ob es an meinem Code liegt - oder ob es generell nicht geht frage ich einfach mal nach :)
Danke!

freundliche Grüsse,
Daniel

--
Das ist der ganze Jammer, die Dummen sind immer so sicher und die Gescheiten so voller Zweifel.
[Bertrand Russell]
  1. Hallo Daniel,

    echo $this->getGroupByID($_GET["id"])->getName();

    Das geht leider erst ab PHP5, bis dahin musst Du Dich mit einer temporären Variable begnügen.

    Siehe http://de3.php.net/zend-engine-2.php, Abschnitt "Dereferencing objects returned from functions".

    Viele Grüße,
    Christian

  2. Hallo,

    Da ich aber nicht weiss ob es an meinem Code liegt - oder ob es generell nicht geht frage ich einfach mal nach :)

    Nee, das geht schon auch wenns bei mir schon wieder über 1/2 Jahr her ist das ich Grösseres per OOP in PHP gerissen habe. Ich glaube extends könnte da weiterhelfen, damit kannst Du auch auf die Methoden einer anderen Klasse zugreifen, diese werden halt quasi weitervererbt. Schau mal unter http://de3.php.net/manual/de/keyword.extends.php ob es Dir weiterhilft?

    Grüsse AndreD

    1. Hallo,

      Schade, geht wohl doch noch nicht... Hab nach Christians Posting auch noch mal das Manual genauer angeschaut und damit vererbt man ja nur die Methode aber Du möchtest ja wohl gleich mit dem Rückgabewert durchstarten... Sorry hab ich missverstanden...

      Grüsse AndreD