如何在我的服务中访问symfony服务容器?

时间:2014-01-08 18:41:57

标签: symfony

我创建了一个新服务,其工作涉及在运行时必须按名称​​ 加载的其他服务上调用函数。所以,我无法将一组静态服务传递给我的服务,我希望它实际上能够在服务容器本身上调用get()。 Symfony文档没有帮助描述如何在Controller类之外执行此操作,我可以在其中调用$ this-> get()。谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

您有两种可能的解决方案:

<强> 1。注入服务容器:

<argument type="service" id="service_container" />

然后在你的班上:

use Symfony\Component\DependencyInjection\Container;

//...

public function __construct(Container $container, ...) {

<强> 2。扩展ContainerAware类

use Symfony\Component\DependencyInjection\ContainerAware;

class YourService extends ContainerAware
{
    public function someMethod($serviceName) 
    {
        $this->container->get($serviceName)->doSomething(); 
        ...
    }
}