Symfony компилирует аннотированные классы

Я заинтересован в Symfony\Component\HttpKernel\DependencyInjection\Extension::getAnnotatedClassesToCompile() метод. Если я правильно понимаю, вы можете addAnnotatedClassesToCompile() массив классов (который использует аннотации) пространства имен. Затем во время прогрева кэша аннотации всех этих классов разогреваются. Я прав или чего-то не хватает?

Если это правильно, то почему Symfony добавляет Symfony\Bundle\FrameworkBundle\Controller\AbstractController, Symfony\Bundle\FrameworkBundle\Controller\Controller к аннотированным классам? Я не могу найти какие-либо аннотации в нем...

1 ответ

Решение

https://symfony.com/doc/current/bundles/extension.html

Если какой-то класс выходит из других классов, все его родители автоматически включаются в список классов для компиляции.

Как ваши контроллеры будут расширяться Controller или же AbstractController это означает, что они всегда будут проверяться на наличие аннотаций, поэтому имеет смысл кэшировать тот факт, что их нет. Добавление их в addAnnotatedClassesToCompile гарантирует, что это сделано, даже если вы не сбросили оптимизированный автозагрузчик.

Другие вопросы по тегам