Obtener dependencias de objetos en PHP
-
26-10-2019 - |
Pregunta
Tengo una instancia del objeto que depende de otros objetos, por ejemplo,
$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'));
¿Cómo puedo obtener una lista de clases utilizadas en $objectC
?
En este caso particular:
array(
'Some_Class',
'Other_Class',
'Another_Class',
'stdClass',
'Another_Object'
)
Necesito serializar el objeto, pero antes de no serializar necesito instanciar todas las clases necesarias.
¿Cómo obtendrías las clases automáticamente?
Solución
serialize
No es superficial, es profundo.
Esto significa que si llamas serialize($objectC);
, no solo está obteniendo $ objectc, sino también todas sus propiedades, incluyendo cualquier objeto que pueda contener.
Si usted deber reinstanciar uno de los objetos infantiles (digamos que es un adaptador de base de datos, que contiene un recurso no serializable), considere implementar el Serializable interfaz, que le permite realizar un control de grano fino sobre las operaciones serializar y no serrializar que simplemente no son posibles con el __sleep
/__wakeup
Métodos mágicos. Puede usar los métodos proporcionados por la interfaz para devolver una estructura de datos personalizada que le permitirá reconstruir manualmente el objeto, según sea necesario.