Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的服务中访问symfony服务容器?_Symfony - Fatal编程技术网

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

如何在我的服务中访问symfony服务容器?,symfony,Symfony,我已经创建了一个新服务,它的工作涉及调用其他服务上的函数,这些服务必须在运行时按名称加载。因此,我不能将一组静态服务传递给我的服务,我希望它能够在服务容器本身上调用get()。Symfony文档在描述如何在控制器类之外执行此操作时没有任何帮助,在控制器类中,我可以调用$this->get()。有人知道怎么做吗?您有两种可能的解决方案: 1。注入服务容器: <argument type="service" id="service_container" /> use Symfony\C

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

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

1。注入服务容器:

<argument type="service" id="service_container" />
use Symfony\Component\DependencyInjection\ContainerAware;

class YourService extends ContainerAware
{
    public function someMethod($serviceName) 
    {
        $this->container->get($serviceName)->doSomething(); 
        ...
    }
}
2。扩展ContainerWare类

<argument type="service" id="service_container" />
use Symfony\Component\DependencyInjection\ContainerAware;

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

您不应在服务中插入
服务\u容器
。在您的示例中,您应该只注入所需的服务。例如,请参阅的“避免代码依赖于容器”部分。