Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter: post #6688 — TG.ME

🤩 Ленивая инициализация без proxy-хаков

В PHP 8.4 ленивые объекты появились прямо в движке. Это особенно полезно для ORM, DI-контейнеров и объектов, создание которых может быть дорогим.

Создать lazy ghost можно через Reflection:


$reflector = new ReflectionClass(Order::class);

$order = $reflector->newLazyGhost(
function (Order $order): void {
$order->__construct(loadFromDb());
}
);


На этом этапе конструктор ещё не выполнялся. Когда объекту понадобится состояние, PHP вызовет initializer и объект инициализируется.

Есть и второй вариант — newLazyProxy(): он при инициализации создаёт реальный объект и проксирует дальнейшие обращения к нему.


📌 Тяжёлая работа выполняется только когда объект действительно понадобится. Это может быть полезно для ленивой загрузки данных или зависимостей.

И важный момент: lazy objects не означают автоматическое ускорение всего приложения. Если объект в итоге всегда используется, выигрыш от откладывания инициализации может быть минимальным.

Библиотека пхпшника
🔥8
August 25, 2026 1.7K 17