0
我創建了一個新服務,其工作涉及調用其他服務上的函數,這些服務必須在運行時通過名稱加載。所以,我無法將一組靜態服務傳遞給我的服務,我希望它實際上能夠在服務容器本身上調用get()
。 Symfony文檔沒有幫助描述如何在Controller類之外完成此操作,我可以調用$ this-> get()。任何人都知道嗎?如何在我的服務中訪問symfony服務容器?
我創建了一個新服務,其工作涉及調用其他服務上的函數,這些服務必須在運行時通過名稱加載。所以,我無法將一組靜態服務傳遞給我的服務,我希望它實際上能夠在服務容器本身上調用get()
。 Symfony文檔沒有幫助描述如何在Controller類之外完成此操作,我可以調用$ this-> get()。任何人都知道嗎?如何在我的服務中訪問symfony服務容器?
你有兩種可能的解決方案:
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();
...
}
}
非常好,謝謝! – zjm555
您不應該在服務中注入'service_container'。在你的例子中,你應該只注入你需要的服務。請參閱http://symfony.com/doc/current/components/dependency_injection.html中的「避免您的代碼取決於容器」部分。 – Tsounabe