我有一个依赖于其他对象的对象实例,例如
$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'
)
我需要序列化对象,但在反序列化之前我需要实例化所有需要的类 你会如何自动获得课程?
答案 0 :(得分:4)
serialize
不浅,很深。
这意味着如果你致电serialize($objectC);
,你不仅会获得$ objectC,还会获得所有的属性,包括它可能包含的任何对象。
如果必须重新实例化其中一个子对象(假设它是一个包含不可序列化的资源的数据库适配器),请考虑实现Serializable接口,这样可以让您执行以下操作:使用__sleep
/__wakeup
魔术方法无法实现序列化和反序列化操作的粒度控制。您可以使用界面提供的方法返回自定义数据结构,以便您根据需要手动重建对象。