Ich versuche, ein Objekt zu erstellen, in dem die Eigenschaften des Objekts nicht direkt auf dem Objekt vorhanden sind, sondern durch eine statische Variable definiert und in einer $data
-Eigenschaft gespeichert werden. durch den Benutzer von __get
und __set
. Es funktioniert gut, bis ich zu Objekten gelangt bin. Wegen des Problems mit rekursiven Objekten und ohne Zugriff auf Getter und Setter unter stdClass
konnte ich intern die Werte des Objekts als Array speichern und in die Ausgabe umwandeln. Leider bekomme ich, wenn jemand etwas tut, wieFestlegen einer Objekteigenschaft als Array-Wert
$fleet->car->wheels = 4;
sofort
Creating default object from empty value
Es scheint darauf hinzudeuten, dass es versucht, den äußeren Satz (car->wheels
) zuerst, dann die innere zu tun? Was für mich keinen Sinn ergibt. Logischerweise würde es zuerst versuchen, den Wert car
von $fleet
zu bekommen, dann versuche wheels
zu setzen.
Darf ich falsch darüber nachdenken oder ist das nicht möglich? Ich weiß, dass die andere Lösung darin besteht, ein Objekt zu erstellen, das die Werte enthält, mit eigenen Getter/Settern, aber ich möchte so wenig Code wie möglich haben.
Der Mindest Code, dies zu sehen:
class Test
{
public function __set($key, $value) {
var_dump($key, $value);
}
}
$test = new Test();
$test->car->wheels = 4;
Dies ist eine interessante Frage. Können Sie eine [MCVE] (https://stackoverflow.com/help/mcve) bereitstellen – dan08
Können Sie Ihre Klassencodes teilen –