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 だけでなく、含まれる可能性のあるオブジェクトを含むすべてのプロパティも取得されることを意味します

子オブジェクトの 1 つを再インスタンス化する必要がある場合(シリアル化できないリソースを含むデータベース アダプターとしましょう)、Serializableインターフェイスの実装を検討してください。 __sleep/__wakeup魔法の方法で。インターフェイスによって提供されるメソッドを使用して、必要に応じてオブジェクトを手動で再構築できるカスタマイズされたデータ構造を返すことができます。

于 2011-03-16T15:31:20.130 に答える