Вопрос

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

$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'
)

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

Это было полезно?

Решение

serialize Не мелкий, это глубоко.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top