【发布时间】:2018-11-23 18:30:23
【问题描述】:
我确实有一个简单的命令,构造函数需要 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 中明确包含服务的所有方式都不适合我。有什么线索吗?
【问题讨论】:
-
您是如何访问服务的?
-
在 app/AppKernel.php 中,是否使用“new Symfony\Bundle\MonologBundle\MonologBundle()”在“registerBundles”函数中注册了“MonologBundle”?
-
在 symfony 3 上我遇到了这个错误并帮助删除了子服务定义。子服务没有自动装配,并且有 2 个参数。我没有使用子服务,但也许 symfony 仍然试图自动装配它。