Obtenir les dépendances d'objets en PHP
-
26-10-2019 - |
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?
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.