Lieber Felix,
ich sehe da ein paar Ungereimtheiten in Deinem Code. Vielleicht kommt das aber auch von unvollständigem Copy&Paste?
Die Ungereimtheiten waren wohl dem geschuldet, dass ich nicht Copy&Paste gemacht habe, sondern versucht habe ein fiktives einfaches Beispiel zu konstruieren. Sorry dafür. Sollte wohl um die Uhrzeit keine Beispiele mehr basteln
Wo ist da das Istgleichzeichen bei $daten = $api->getDaten()
? Das sollte eigentlich einen Syntaxfehler provozieren...
Du hast vollkommen recht; und im Echtcode steht dort natürlich auch eins und es steht auch je ein echo vor den Testausgaben.
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;
Mit zwei (bzw. im Echtbeispiel dann tlw. drei) Variablen funktioniert es dann. Ich muss mal sehen, ob es mir dann tatsächlich noch weiter hilft/eine Vereinfachung bedeutet oder ob ich einen anderen Ansatz wählen sollte. Der Unterschied zwischen $daten->{'benutzer'}->{'name'}
und $daten->{'benutzer->name'}
wird mir im Zusammenhang mit der Antwort von Der-Dennis klar.
Vielleicht aber auch willst Du über das Unterobjekt iterieren?
Nein, dass ist hier nicht der Fall. Vielmehr will ich ähnliche Daten aus insgesamt 4 API´s eindeutig meinem Datenobjekt zuordnen; diese können aber in jeder API woanders stecken. Vlt. versuch ich mich nochmal an einem Beispiel. Ich hoffe sehr früh klappt das besser als sehr spät mit dem konstruieren eines Beispiels (der Echtcode würde wohl den Rahmen sprengen) :-)
$datenAPI1 = $getDaten('api1');
$name = $datenAPI1->benutzer->name;
$datenAPI2 = $getDaten('api2');
$name = $datenAPI2->name
Idee war, dass ich über eine Referenztabelle den "Speicherort" aus allen APIs auslese und die Daten so meinem Datenobjekt einfach zuordnen kann.
bezeichnung | API1 | API2 | API3 | ...
name benutzer->name | name | ... | ...
Vielleicht nützt Dir das irgendwie. Code wie immer ungetestet!
Deine Antwort hilft mir sehr weiter, vielen Dank :)
FG
Alex