Der-Dennis: Std::Class, Bezug soll aus Variable kommen

Beitrag lesen

Hallo Alex,

Beispiel 2:

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

Im zweiten Beispiel soll nun über eine Variable auf die Objektdaten zugegriffen werden. Das Beispiel erzeugt aber folgenden Fehlercode:

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

Was mache ich falsch? Wie mache ich es richtig? Ist es möglich die Referenz auf Daten eines Objektes in einer Variablen zu speichern?

zuerst einmal handelt es sich bei -> um einen Operator, Du verwendest ihn aber als eine Art Bezeichner, das sind zwei verschiedene Dinge. Den Unterschied solltest Du Dir zuerst einmal klar machen.

Über stdClass kannst Du glaube ich nicht direkt iterieren. Du könntest das aber mit Funktionen wie get_object_vars() und evtl. Rekursion nachbauen. Kannst Du Dir ja mal ansehen.

Ansonsten gibt es in PHP grundsätzlich noch zwei weitere Möglichkeiten, auf die Du früher oder später wohl stoßen wirst: Ich sage aber schon mal - und das ist wirklich wichtig - dass die nur mit großer Vorsicht verwendet werden sollten, wenn überhaupt, und auch nur, wenn Du genau weißt, was Du das da tust. Frage im Zweifel nochmal nach.

  1. Variable Variablen: Damit kannst Du den Inhalt einer Variablen als Bezeichner einer anderen Variablen verwenden.
  2. eval(): Einen String als PHP-Code auswerten.

Nochmal, das ist nicht empfehlenswert, wenn man nicht ganz genau weiß, was man tut. Und selbst dann häufig nicht.

Es wäre aber wohl nicht schlecht, wenn Du noch etwas mehr dazu sagen könntest, was Du vorhast, was Du Dir davon versprichst und in welchem Kontext das stattfindet. Je nachdem könnte es noch einige andere Punkte und Lösungen geben.

Gruß, Dennis