Heim >Backend-Entwicklung >PHP-Tutorial >Die stdClass-Klasse in PHP verstehen
Ich glaube, dass Sie, wie ich, oft PHP-Code sehen werden, der dem folgenden ähnelt:
$user = new stdClass(); $user->name = 'gouki';
Code wie dieser, wofür wird er verwendet?
Öffnen Sie das Handbuch und suchen Sie nach stdClass. Sie werden feststellen, dass es fast keine Einführung im Handbuch gibt. Wenn Sie erneut bei Google suchen, werden Sie fast alle englischen Erklärungen sehen.
Tatsächlich wurde stdClass erst in PHP5 populär. Und stdClass ist auch eine reservierte Klasse von Zend. Es scheint keine andere Wirkung zu haben. Es gibt auch fast keine Erklärung.
Oder wir können es so verstehen: stdClass ist eine Basisklasse von PHP. Fast alle Klassen erben diese Klasse, sodass sie jederzeit neu sein kann und diese Variable zu einem Objekt werden kann. Gleichzeitig weist diese Basisklasse eine Besonderheit auf, nämlich dass sie über keine Methoden verfügt.
Immer wenn eine Variable von new stdClass() verwendet wird, ist es unmöglich, $a->test() zu verwenden.
Oder wir können es so verstehen: Aufgrund der Einzigartigkeit von PHP5-Objekten werden Objekte überall dort referenziert, wo sie aufgerufen werden, sodass sie weniger Ressourcen verbrauchen. Wenn ihm auf anderen Seiten ein Wert zugewiesen wird, wird er direkt geändert, anstatt auf eine Kopie zu verweisen.
Zum Beispiel:
$user = new stdClass(); $user->name = 'gouki'; $myUser = $user; $myUser->name = 'flypig';
In der PHP4-Ära verbraucht solcher Code Systemressourcen. Denn:
$myUser = $user;
Dadurch wird eine Kopie erstellt. Daher wird es in PHP4 immer so verwendet:
$myUser = & $user;
Manche Leute sagen, warum nicht ein Array verwenden? Wären Arrays nicht praktischer? Und für schwach typisierte Programme wie PHP dürfte die Verwendung von Arrays am praktischsten sein.
In der Tat. Arrays sollten in Programmen am bequemsten zu verwenden sein. Allerdings wird jedes Mal, wenn auf das Array verwiesen wird ($a = $b), tatsächlich eine Kopie erstellt gehört) Die Leute sagen es, ich habe es nicht getestet ... und ich weiß nicht, wie ich es testen soll. Wenn jemand es weiß, sagen Sie es mir bitte, danke)
Es gibt jedoch auch ein Funktionsarrayobjekt im Standardklassenbibliothek von SPL, die ein Array direkt in ein Objekt konvertieren kann. Dies ist auch eine gute Idee.
Weitere Artikel zum Verständnis der stdClass-Klasse in PHP finden Sie auf der chinesischen PHP-Website!