Symfony 4中的自动装配服务(参数太少)

时间:2018-04-24 11:29:55

标签: php symfony autowired

我确实有一个简单的命令,构造函数需要LoggerInterface作为依赖。

<?php

namespace App\Command;

// use (...)

class ProcessReportCommand extends Command
{
    /** @var LoggerInterface */
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        parent::__construct();
        $this->logger = $logger;
    }
    // (...)
}

services.yml中的配置看起来非常默认:

parameters:

services:
    _defaults:
        autowire: true      
        autoconfigure: true 
        public: false      

    App\:
        resource: '../src/*'
        exclude: '../src/{Entity,Migrations,Exception,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

不幸的是我收到PHP错误,说没有注入依赖项。

  

PHP致命错误:未捕获   Symfony \ Component \ Debug \ Exception \ FatalThrowableError:输入错误:太多   很少有功能论据   传递了App \ Command \ ProcessReportCommand :: __ construct(),0   / home / tomasz / project / bin / console在第40行,正好是1   /home/tomasz/project/src/Command/ProcessReportCommand.php:17

即使我将此依赖项切换到App\下的任何其他类,它的行为总是那样。 我完全不知道我应该做些什么才能让它发挥作用,即使是明确包含services.yml内部服务的那些方式也不适用于我。有线索吗?

1 个答案:

答案 0 :(得分:1)

你清楚了吗? php bin/console cache:clear

如果这不起作用,php bin/console debug:container Process的输出是什么?