Я использую Symfony 4.2
Вот мой конфиг для моих классов, которые я хочу автоматически подключить:
services:
_defaults:
autowire: true
# autoconfigure: true
Cyrene\components\:
resource: '../../app/components/*'
tags: ['controller.service_arguments']
exclude:
- '../../app/components/common/*'
Пути правильные, потому что при использовании команды debug:container
Symfonyдействительно показывает мне все классы, которые у меня есть в папке "components".
Но используя команду debug:autowiring
symfony, он не показывает ни один из моих классов, даже если у них есть тег controller.service_arguments
, что должно сделать их автоматически подключаемыми.
что я здесь не так делаю?
Я тоже столкнулся с другой проблемой ...
, хотя я использую один класс autowireable, например, Psr\Log\LoggerInterface
(который по умолчанию автоматически подключается из symfony), symfony не передает его конструктору:
use Cyrene\core\actions\AbstractAdminAction;
use Psr\Log\LoggerInterface;
class OverviewIndexAction extends AbstractAdminAction
{
public function __construct(LoggerInterface $logger, OverviewIndexResponder $responder)
{
$this->responder = $responder;
}
Я получаю это сообщение об ошибке: [...] Too few arguments to function Cyrene\components\admin\application\overview\index\OverviewIndexAction::__construct(), 0 passed [...] but exactly 2 expected [...]
, что приводит меня к предположению, что автопроводка вообще не работает.
$logger
должен был быть автопровод, потому что он указан в команде debug:autowiring
Symfony.OverviewIndexResponder $responder
находится в том же пути / пространстве имен, что и OverviewIndexAction
, следовательно, нет use
.