2011-03-16 156 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魔法。您可以使用接口提供的方法返回自定義數據結構,以便根據需要手動重建對象。