Konvertieren von stdClass-Objekten in benutzerdefinierte Klassen
In einem Szenario, in dem ein Speichersystem eines Drittanbieters nur stdClass-Objekte zurückgibt und sie in vollständige Klassen umwandelt Es ist notwendig, dass es sich um vollwertige Objekte einer bestimmten Klasse handelt. PHP bietet jedoch keine einfache Umwandlungsmethode für solche Konvertierungen.
Typ-Jonglage
Die Typ-Jonglage-Funktionen von PHP ermöglichen bestimmte Konvertierungen, wie zum Beispiel:
Diese Konvertierungen sind für die Arbeit mit stdClass-Objekten von unschätzbarem Wert, sie erstellen jedoch nicht direkt Instanzen einer bestimmten Klasse.
Benutzerdefinierter Mapper
Für eine umfassende Konvertierung kann eine Mapper-Klasse erstellt werden, um die Umwandlung von stdClass in eine Zielklasse durchzuführen. Dazu gehört das Definieren von Methoden, die jede Eigenschaft des stdClass-Objekts in die entsprechende Eigenschaft in der Zielklasse übersetzen.
Hackish-Lösung (Vorsicht empfohlen)
Als Workaround: Der folgende Code kann angepasst werden, um Arrays und Objekte an Instanzen einer bestimmten Klasse zu „pseudocasten“:
function arrayToObject(array $array, $className) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($className), $className, strstr(serialize($array), ':') )); } function objectToObject($instance, $className) { return unserialize(sprintf( 'O:%d:"%s"%s', strlen($className), $className, strstr(strstr(serialize($instance), '"'), ':') )); }
Diese Lösung Ändert die serialisierte Darstellung der Daten, um die Zielklasse darzustellen. Aufgrund möglicher Nebenwirkungen wird jedoch empfohlen, diesen Ansatz mit Vorsicht anzuwenden.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich stdClass-Objekte in benutzerdefinierte Klassen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!