(PHP 8 >= 8.4.0)
ReflectionClass::resetAsLazyGhost — Сбрасывает и помечает объект ленивым
$object
, callable $initializer
, int $options
= 0): void
Метод сбрасывает существующий объект object
и помечает объект ленивым.
Метод вызывает деструктор объекта, только если деструктор определили в классе и если
указали флаг ReflectionClass::SKIP_DESTRUCTOR
.
Только в отдельном случае, когда передали инициализированный прокси,
реальный экземпляр отсоединяется от прокси. Деструктор реального экземпляра
вызывается независимо от флага SKIP_DESTRUCTOR
,
если ссылок на реальный экземпляр больше не осталось.
Динамические свойства удаляются, а значение свойств, которые объявили в классе,
отбрасывается, как если бы вызвали языковую конструкцию unset(),
и объект помечается ленивым. Подразумевается, что если объект — экземпляр
подкласса с дополнительными свойствами, то эти свойства не изменяются и не становятся
ленивыми.
Доступные только для чтения свойства
также не модифицируются и не становятся ленивыми, если такие свойства объявили окончательными
через ключевое слово final
или сам класс окончательный объявили окончательным через ключевое
слово final
.
Метод не помечает объект ленивым, если ни одно свойство не пометили ленивым. См. также секцию «Жизненный цикл ленивых объектов».
Иначе после вызова метода поведение объекта будет таким же, как у объекта, который создали методом ReflectionClass::newLazyGhost(), за исключением подкласса и свойств, доступных только для чтения, как уже описывалось.
Объект не заменяется другим, и его идентификатор остается неизменным.
Поведение функций spl_object_id()
и spl_object_hash(),
классов SplObjectStorage, WeakMap
и WeakReference,
и оператора идентичности ===
не меняется.
object
initializer
options
Параметр options
принимает комбинацию следующих
флагов:
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
ReflectionClass::SKIP_DESTRUCTOR
Функция не возвращает значения после выполнения.
Метод выбросит исключение ReflectionException, если объект ленивый и объект не инициализировали.
Метод выбросит ошибку Error, если объект инициализируется,
или если свойства объекта перебираются
конструкцией foreach
.