Heim > Backend-Entwicklung > PHP-Tutorial > Wie konvertiere ich stdClass-Objekte in benutzerdefinierte Klassen in PHP?

Wie konvertiere ich stdClass-Objekte in benutzerdefinierte Klassen in PHP?

Mary-Kate Olsen
Freigeben: 2024-11-26 09:15:11
Original
1065 Leute haben es durchsucht

How to Convert stdClass Objects to Custom Classes in PHP?

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:

  • (int) oder (integer) für Ganzzahl
  • (bool) oder (boolean) für boolean
  • (float), (double) oder (real) für float
  • (string) für string
  • (array) für array
  • (Objekt) für Objekt
  • (nicht gesetzt) ​​für NULL (PHP 5)

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), '"'), ':')
    ));
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage