PHP Conference Japan 2024

ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

ReflectionClass::resetAsLazyGhostСбрасывает и помечает объект ленивым

Описание

public ReflectionClass::resetAsLazyGhost(object $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
Callback-функция инициализатора с той же сигнатурой и целью, что и в описании метода ReflectionClass::newLazyGhost().
options

Параметр options принимает комбинацию следующих флагов:

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
По умолчанию сериализация ленивого объекта запускает его инициализацию. Установка этого флага предотвращает инициализацию, что разрешает сериализовать ленивые объекты без инициализации.
ReflectionClass::SKIP_DESTRUCTOR
По умолчанию деструктор объекта, — если деструктор определили в классе, — вызывается раньше, чем метод сделает объект ленивым. Это обеспечивает безопасность в отношении предыдущих состояний объекта. Этот флаг отключает такое поведение и разрешает сбрасывать объекты до ленивых без вызова деструктора.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Ошибки

Метод выбросит исключение ReflectionException, если объект ленивый и объект не инициализировали.

Метод выбросит ошибку Error, если объект инициализируется, или если свойства объекта перебираются конструкцией foreach.

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top