ReflectionClass::resetAsLazyProxy

(PHP 8 >= 8.4.0)

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

Описание

public ReflectionClass::resetAsLazyProxy(object $object, callable $factory, int $options = 0): void

Поведение метода аналогично методу ReflectionClass::resetAsLazyGhost(), за исключением того, что этот метод использует стратегию прокси.

Объект в аргументе object становится прокси. По аналогии с методом ReflectionClass::resetAsLazyGhost() объект не заменяется другим объектом и сохраняет идентификатор даже после инициализации. Ленивый прокси и реальный экземпляр — разные объекты, с разными идентификаторами.

Список параметров

object
Неленивый объект или инициализированный ленивый объект.
factory
Фабричная callback-функция с теми же сигнатурой и целью, что и в описании метода ReflectionClass::newLazyProxy().
options

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

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

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

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

Ошибки

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

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

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