Frage

Ich habe eine Instanz des Objekts, das von anderen Objekten abhängig ist, z. B.

$objA = new Some_Class();
$objB = new Other_Class();
$objC = new Another_One();

$objA->property = new stdClass;
$objB->key = $objA;
$objB->arr = array(new Other_Object());

$objectC->property = $objB
$objectC->other = array(array('k'=>'v'));

Wie kann ich eine Liste von Klassen erhalten, die in verwendet werden? $objectC?

In diesem speziellen Fall:

array(
    'Some_Class',
    'Other_Class',
    'Another_Class',
    'stdClass',
    'Another_Object'
)

Ich muss das Objekt serialisieren, aber bevor ich unverzweigend ist, muss ich alle erforderlichen Klassen instanziieren.
Wie würden Sie die Klassen automatisch bekommen?

War es hilfreich?

Lösung

serialize Ist es nicht flach, es ist tief.

Das bedeutet, dass wenn Sie anrufen serialize($objectC);, Sie erhalten nicht nur $ ObjectC, sondern auch alle Eigenschaften. Einschließlich aller Objekte, die es enthalten könnte.

Wenn du muss Starten Sie eines der untergeordneten Objekte (sagen wir, es handelt sich um einen Datenbankadapter, der eine unverzehrbare Ressource enthält). Serialisierbar Schnittstelle, mit der Sie eine feinkörnige Kontrolle über die Serialisierung und unverschöblichen Vorgänge durchführen können, die mit dem einfach nicht möglich sind __sleep/__wakeup Magische Methoden. Sie können die von der Schnittstelle bereitgestellten Methoden verwenden, um eine angepasste Datenstruktur zurückzugeben, mit der Sie das Objekt nach Bedarf manuell rekonstruieren können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top