Нативні lazy objects без запасних гілок
У коді 7.4.0, не рахуючи тестів, є 54 порівняння PHP_VERSION_ID з 80400 у 32 файлах, бо той самий код має працювати й на PHP 8.2. У 8.0.0 жодного. Контейнер завжди створює lazy-сервіси через ReflectionClass::newLazyGhost(), тому lazy-сервісом без обхідних шляхів може бути й final, і readonly клас. DomCrawler завжди парсить HTML через Dom\HTMLDocument, у HtmlSanitizer лишився тільки NativeParser на тому ж класі, а symfony/polyfill-php84 і masterminds/html5 зникли із залежностей компонентів.
// DependencyInjection\LazyProxy\Instantiator\LazyServiceInstantiator
if ($asGhostObject) {
return new \ReflectionClass($definition->getClass())->newLazyGhost(
static function ($ghost) use ($realInstantiator) { $realInstantiator($ghost); }
);
}
// DependencyInjection\LazyProxy\Instantiator\LazyServiceInstantiator
if (\PHP_VERSION_ID >= 80400 && $asGhostObject) {
return (new \ReflectionClass($definition->getClass()))->newLazyGhost(
static function ($ghost) use ($realInstantiator) { $realInstantiator($ghost); }
);
}
// далі для PHP 8.2 і 8.3 клас, згенерований з LazyGhostTrait