Php Symfony 3:In-can';t向我的控制器注入服务

Php Symfony 3:In-can';t向我的控制器注入服务,php,dependency-injection,symfony,Php,Dependency Injection,Symfony,我创建了一个自定义助手类并将其声明为服务。 如果我使用以下方法在控制器中获取此帮助程序,则该方法有效: 但我认为使用DI更好。然后我也将我的控制器声明为服务: parameters: tee.helper.alert.class: TigreEtEuphrateBundle\Service\AlertHelper tee.controller.default.class: TigreEtEuphrateBundle\Controller\DefaultController s

我创建了一个自定义助手类并将其声明为服务。 如果我使用以下方法在控制器中获取此帮助程序,则该方法有效:

但我认为使用DI更好。然后我也将我的控制器声明为服务:

parameters:
    tee.helper.alert.class: TigreEtEuphrateBundle\Service\AlertHelper
    tee.controller.default.class: TigreEtEuphrateBundle\Controller\DefaultController

services:

#    CONTROLLERS
    tee.controller.default:
        class: "%tee.controller.default.class%"
        arguments: ["@tee.helper.alert"]

#    HELPERS
    tee.helper.alert:
        class: "%tee.helper.alert.class%"
        arguments: ["@session"]
但是当我的控制器被调用时,我会得到一个FatalError,因为构造函数中没有给出必需的参数。 这基本上是我的控制器类:


怎么了/

不相关,但我认为值得一提。Symfony最佳实践建议不要对服务类名称使用变量。这不是最重要的事情,但仍然是一个可读性的改进,谢谢你的反馈。我在基于Symfony的框架中看到了这种做法。我没有注意到它不是标准的。您能提供具体的错误消息吗?eror消息是:“可捕获的致命错误:传递给MyBundle\Controller\DefaultController的参数1::\uu construct()必须是MyBundle\Service\AlertHelper的实例,没有给出“它是MyBundle吗?”在定义中,您有TigreEtEuphrateBundle
parameters:
    tee.helper.alert.class: TigreEtEuphrateBundle\Service\AlertHelper
    tee.controller.default.class: TigreEtEuphrateBundle\Controller\DefaultController

services:

#    CONTROLLERS
    tee.controller.default:
        class: "%tee.controller.default.class%"
        arguments: ["@tee.helper.alert"]

#    HELPERS
    tee.helper.alert:
        class: "%tee.helper.alert.class%"
        arguments: ["@session"]
class DefaultController extends Controller
{
    private $alert_helper;

    public function __construct(AlertHelper $alert_helper)
    {
        $this->alert_helper = $alert_helper;
    }
    // ...
}