1

我的 Symfony 应用程序中有一项服务,我从控制器知道我们可以将它与该功能一起使用,$this->get('MyService'); 但是从我的控制器外部的脚本中我应该如何调用它?

4

1 回答 1

1

您必须在捆绑的服务配置中将外部控制器类注册为服务(我将在此处假设 yml 配置)

services:
    your_service_name:
        class:     Your/NonController/Class
        arguments: ['@service_you_want_to_inject']

现在在您要使用注入服务的班级中:

// Your/NonController/Class.php
protected $myService;

// your 'service_you_want_to_inject' will be injected here automatically
public function __construct($my_service)
{
    $this->myService = $my_service;
}

请记住,要发生依赖注入,您现在必须实际将此类用作服务 - 否则注入将不会自动发生。

您现在可以像往常一样在控制器中获取新创建的服务:

// 'service_you_want_to_inject' will be automatically injected in the constructor
$this->get('your_service_name');      

还有setter injection和property injection,但这超出了这个问题的范围......在symfony文档的Service Container章节中阅读更多关于DI的信息。

于 2013-05-26T12:05:21.497 回答