如何从控制器外部使用Symfony2.2服务?

时间:2013-05-26 11:55:48

标签: php symfony

我在Symfony应用程序中有一项服务,我从控制器知道我们可以使用函数$this->get('MyService'); 但是从控制器外面的脚本我应该怎么称呼它?

1 个答案:

答案 0 :(得分: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注入和属性注入,但这不属于这个问题的范围...在symfony文档的Service Container章节中阅读有关DI的更多信息。