Получение объектных зависимостей в PHP - PullRequest
0 голосов
/ 16 марта 2011

У меня есть экземпляр объекта, который зависит от других объектов, например,

$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?

В этом конкретном случаеcase:

array(
    'Some_Class',
    'Other_Class',
    'Another_Class',
    'stdClass',
    'Another_Object'
)

Мне нужно сериализовать объект, но перед десериализацией мне нужно создать экземпляр всех необходимых классов.
Как бы вы получили классы автоматически?

1 Ответ

4 голосов
/ 16 марта 2011

serialize не мелкий, а глубокий.

Это означает, что если вы вызываете serialize($objectC);, вы получаете не только $ objectC, но и все его свойства, , включаялюбые объекты, которые он может содержать .

Если вы должны повторно создать один из дочерних объектов (скажем, это адаптер базы данных, который содержит несериализуемый ресурс), рассмотрите возможность реализации Сериализуемый интерфейс, который позволяет вам выполнять детальное управление операциями сериализации и десериализации, что просто невозможно при использовании магических методов __sleep / __wakeup.Вы можете использовать методы, предоставленные интерфейсом, чтобы вернуть настроенную структуру данных, которая позволит вам при необходимости реконструировать объект вручную.

...