2011-10-09 43 views
0

您可以訪問(比方說)學說服務的控制器內,使用:如何訪問內部非控制器功能服務的Symfony 2

$d = $this->getDoctrine() 

現在我想我的控制器調用另一個功能(在另一個類),我希望該類可以訪問所有服務。如果沒有將服務作爲變量傳遞,這可能嗎?

回答

4

你必須注入依賴服務到你的類或方法。如果您正在考慮某個全局對象,那麼您可能在任何地方訪問,而不是正確的路徑(並且您實際上無法以此方式訪問容器)。你會錯過依賴注入的整個點。

,你可以注入服務類兩種方式:

  • 手動
  • 讓DIC做

首先解決需要你自己通過依賴任何一種方式(構造函數,二傳手, 方法)。

後面的解決方案意味着您將您的類定義爲服務,並讓容器構造它並注入依賴關係。只有在您可以將對象創建委託給DIC時才能完成此操作。例如,它不能用實體完成。

小心注射整個容器。這不是最佳做法。根據配置,您可能會引入對可能具有不同服務的整個容器的依賴性。依賴關係不清楚。

相關問題