Mit stdClass können Sie (im Wesentlichen) typenlose Objekte erstellen.Zum Beispiel:
$object = (object) array(
'name' => 'Trevor',
'age' => 42
);
Wie hier gezeigt, der schnellste Weg, um ein stdClass Objekt zu erstellen ist ein assoziatives Array zu werfen. Für mehrere Ebenen, tun Sie einfach die gleiche Sache wieder nach innen wie folgt aus:
$object = (object) array(
'name' => 'Trevor',
'age' => '42',
'car' => (object) array(
'make' => 'Mini Cooper',
'model' => 'S',
'year' => 2010
)
);
Eine andere Methode ist es, die assoziatives Array zu einem Objekt anschließend mit einer rekursiven Funktion zu konvertieren. Hier ist ein Beispiel.
Dies ist nützlich, wenn Sie nicht derjenige sind, der das assoziative Array erstellt.
Obwohl PHP 5.3 anonyme Methoden unterstützt, können Sie leider keine anonyme Methode in eine stdClass einfügen (obwohl Sie eine in ein assoziatives Array einfügen können). Aber das ist sowieso nicht so schlimm; Wenn Sie Funktionalität darin möchten, sollten Sie stattdessen eine Klasse erstellen.
* (Nitpick) * Objekte sind nicht identisch mit Assoziativen Arrays, daher sind die ersten beiden Beispiele nicht * äquivalent *. Die Verwendung von json_encode für das assoc-Array würde JavaScript-Objekte erzeugen, da in JavaScript keine assoc-Arrays vorhanden sind, dies gilt jedoch nicht für die Verwendung von json_decode für das JavaScript-Objekt. Standardmäßig gibt json_decode Objekte dafür zurück. – Gordon