Felix Riesterer: Std::Class, Bezug soll aus Variable kommen

Beitrag lesen

Lieber Alex_,

ich sehe da ein paar Ungereimtheiten in Deinem Code. Vielleicht kommt das aber auch von unvollständigem Copy&Paste?

Beispiel 2:

$api = new API();
$daten $api->getDaten();         // get Object
$name = 'benutzer->name';         
$daten->$name;                   // Testausgabe funktioniert nicht

[...] Notice: Undefined property: stdClass::$benutzer->name in ...

Wo ist da das Istgleichzeichen bei $daten = $api->getDaten()? Das sollte eigentlich einen Syntaxfehler provozieren...

Du willst $daten->{'benutzer'}->{'name'} haben, nicht jedoch $daten->{'benutzer->name'}! Da ich Dein Projekt jetzt nicht kenne, kann ich Dir nicht weiter raten. Vielleicht benötigst Du zwei Variablen wie hier:

$daten = $api->getDaten();
$subO  = 'benutzer';
$prop  = 'name';

echo $daten->$subO->$prop;

Vielleicht aber auch willst Du über das Unterobjekt iterieren?

$daten = $api->getDaten();
$key   = 'benutzer';

$subObj = $daten->$key;

foreach (get_object_vars($subObj) as $prop => $val) {
    echo "subObj->$prop = '$val'\r\n"; // $val of type != object/class
}

Vielleicht nützt Dir das irgendwie. Code wie immer ungetestet!

Liebe Grüße,

Felix Riesterer.