Question

I ai une instance de l'objet qui est dépendant d'autres objets, par exemple.

$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'));

Comment puis-je obtenir une liste des classes utilisées dans $objectC?

Dans ce cas particulier:

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

Je dois sérialiser l'objet, mais avant délinéarisation je dois instancier toutes les classes nécessaires.
Comment voulez-vous obtenir les classes automatiquement?

Était-ce utile?

La solution

serialize n'est pas peu profonde, il est profond.

Cela signifie que si vous appelez serialize($objectC);, vous obtenez non seulement ObjectC, mais aussi $ toutes les propriétés de elle, y compris les objets qu'il peut contenir .

Si vous devez reinstantiate l'un des objets enfants (disons que c'est un adaptateur de base de données, qui contient une ressource non sérialisable), envisager d'appliquer la __sleep / __wakeup méthodes magiques. Vous pouvez utiliser les méthodes fournies par l'interface pour renvoyer une structure de données personnalisée qui vous permettra de reconstituer manuellement l'objet, au besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top