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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top