Typumwandlung und Konvertierung von stdClass-Objekten
In PHP gibt das verwendete Speichersystem ausschließlich stdClass-Objekte zurück, was eine Herausforderung darstellt, sie in vollständige zu konvertieren -ausgebildete Objekte einer bestimmten Klasse. In diesem Artikel wird die Machbarkeit dieser Konvertierung untersucht.
Typ-Jonglage für begrenzte Konvertierungen
Der Typ-Jonglage-Mechanismus von PHP ermöglicht die Konvertierung von stdClass-Objekten in bestimmte Typen durch Klammernumwandlung. Dies ist jedoch auf Grundtypen wie Ganzzahl, Boolescher Wert, Gleitkommazahl, Zeichenfolge, Array und Objekt beschränkt.
Zuordnung und Objektklonen
So konvertieren Sie ein stdClass-Objekt In ein Objekt einer bestimmten Klasse ist ein Mapping- oder Klonansatz erforderlich. Es kann eine Zuordnungsfunktion erstellt werden, um die stdClass-Eigenschaften in die gewünschten Klasseneigenschaften zu übersetzen. Alternativ kann die __clone()-Methode in OOP verwendet werden, um ein Objekt einer anderen Klasse mit denselben Eigenschaften zu erstellen.
Hackischer Ansatz: Serialisierungstricks
Mehr Bei dieser unkonventionellen Methode wird ein Codeausschnitt angepasst, der ein Array in ein Objekt einer bestimmten Klasse konvertiert. Durch Bearbeiten der serialisierten Daten des stdClass-Objekts und anschließendes Deserialisieren ist das Ergebnis praktisch eine Instanz der gewünschten Klasse. Aufgrund möglicher Nebenwirkungen sollte dieser Ansatz jedoch mit Vorsicht angewendet werden.
Beispielcode für die Objektkonvertierung
function objectToObject($instance, $className) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($className), $className, strstr(strstr(serialize($instance), '"'), ':') )); }
Durch Übergabe des stdClass-Objekts und des gewünschten Klassennamens als Argumente gibt diese Funktion ein Objekt der angegebenen Klasse zurück.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3