0

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

$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

1 回答 1

4

serialize不是浅,是深。

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

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

于 2011-03-16T15:31:20.130 回答