(PHP 8 >= 8.4.0)
ReflectionClass::initializeLazyObject — Принудительно инициализирует ленивый объект
Метод принудительно инициализирует ленивый объект object
.
Метод не подействует, если в аргументе передали не ленивый объект или объект
уже инициализировали, иначе инициализация продолжается так, как описывает секция
«Последовательность
инициализации».
Замечание: В большей части случаев вызывать метод не потребуется, поскольку ленивые объекты инициализируются автоматически, при начале отслеживания состояния или изменении ленивого объекта.
object
Метод возвращает реальный экземпляр объекта,
если объект object
оказался ленивым прокси,
иначе возвращает сам object
.
Пример #1 Базовый пример принудительной инициализации ленивого объекта
<?php
class Example
{
public function __construct(public int $prop) {}
}
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost(function ($object) {
echo "Initializer called\n";
$object->__construct(1);
});
var_dump($object);
$reflector->initializeLazyObject($object);
var_dump($object);
?>
Результат выполнения приведённого примера:
lazy ghost object(Example)#3 (0) { ["prop"]=> uninitialized(int) } Initializer called object(Example)#3 (1) { ["prop"]=> int(1) }