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

# ReflectionClass::resetAsLazyGhost

(PHP 8 >= 8.4.0)

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

### Описание

public function 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`.

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

- ReflectionClass::newLazyGhost() - Создаёт новый экземпляр ленивого призрака
- ReflectionClass::resetAsLazyProxy() - Сбрасывает и помечает объект ленивым

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open