Документация Symfony гласит, что общедоступные пакеты должны явно настраивать свои службы и не полагаться на автоматическую разводку . Поэтому я использую приведенное ниже для настройки службы контроллера в своем комплекте.
<service id="blah\blah\SecurityController">
<argument type="service" id="security.authentication_utils"/>
<tag name="controller.service_arguments"/>
<tag name="container.service_subscriber"/>
</service>
Аргумент безопасности заключается в том, что я использую authenticationUtils-> getLastAuthenticationError () в методе входа в систему.
Однако такое определение службы вызывает ошибку устаревания. User Deprecated: Auto-injection of the container for "blah\blah\SecurityController" is deprecated since Symfony 4.2. Configure it as a service instead. at /var/www/html/vendor/symfony/framework-bundle/Controller/ControllerResolver.php:64)
Если я просто добавлю autowire="true"
к определению сервиса выше, ошибка исчезнет (и в этот момент мне не нужен этот существующий аргумент). Тем не менее, я хотел бы следовать рекомендациям Symfony относительно явной конфигурации.
Чего мне не хватает, что происходит автоинъекция, когда для autowire установлено значение true, которое мне нужно явно включить?