在PHP中获取对象依赖关系

在PHP中获取对象依赖关系,php,zend-framework,serialization,object-serialization,Php,Zend Framework,Serialization,Object Serialization,我有一个依赖于其他对象的对象实例,例如 $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->othe

我有一个依赖于其他对象的对象实例,例如

$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'));
如何获取
$objectC
中使用的类列表

在这种情况下:

array(
    'Some_Class',
    'Other_Class',
    'Another_Class',
    'stdClass',
    'Another_Object'
)
我需要序列化对象,但在取消序列化之前,我需要实例化所有需要的类。

如何自动获取类?

serialize
不是浅层次的,而是深层次的

这意味着如果调用
serialize($objectC),您不仅可以获得$objectC,还可以获得它的所有属性,包括它可能包含的任何对象


如果您必须重新实例化一个子对象(假设它是一个数据库适配器,它包含一个不可串行化的资源),请考虑实现该接口,它允许您对序列化和非序列化操作进行细粒度的控制,而这些操作在魔术方法中是不可能的。您可以使用接口提供的方法返回自定义数据结构,该结构将允许您根据需要手动重建对象。

serialize
不是浅的,而是深的

这意味着如果调用
serialize($objectC),您不仅可以获得$objectC,还可以获得它的所有属性,包括它可能包含的任何对象

如果您必须重新实例化一个子对象(假设它是一个数据库适配器,它包含一个不可串行化的资源),请考虑实现该接口,它允许您对序列化和非序列化操作进行细粒度的控制,而这些操作在魔术方法中是不可能的。您可以使用接口提供的方法返回自定义数据结构,该结构将允许您根据需要手动重建对象