2011-03-16 66 views
0

我有一个依赖其他对象的对象实例,在PHP中获取对象相关性

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

我需要序列化对象,但反序列化之前,我需要实例所有需要的类。
你会如何自动获得课程?

回答

4

serialize不浅,很深。

这意味着,如果你调用serialize($objectC);,你得到不只是$ objectC,而且它的所有性能,包括它可能包含任何对象。

如果必须重新实例子对象(让我们说这是一个数据库适配器,其中包含一个不可序列化的资源)中的一个,考虑实施Serializable接口,它可以让你在序列化和反序列化操作进行细粒度的控制这根本不可能用__sleep/__wakeup魔法。您可以使用接口提供的方法返回自定义数据结构,以便根据需要手动重建对象。