0
A
回答
3
有很多種不同的方式,都有優點和缺點。
首先,每個服務都是某種對象,所以你總是可以自己創建有問題的對象。你可能被迫處理很多引用,但這是可能的。這破壞了依賴注入的想法,所以這不是你應該做的!
第二種方式是注入到服務類:
class MyClass{
public function __construct($session){
// ...
}
}
class MyContainer extends Controller{
public function SomeKindOfAction(){
$myClass = new MyClass($this->get('session'));
}
}
如果你只是你的控制器中使用的類,這可能是好的。如果你有更多的嵌套關係,比如在MyClass中,你需要創建另一個類,你可能會遇到緊耦合(這是爲了避免)以及複雜性問題。
最好的方法是創建自己的服務並在那裏注入所需的東西。這裏有很多文檔,所以我只是舉一個簡單的例子來使用上面的MyClass。
services.yml:
services:
my.myClass:
class: /Acme/DefaultBundle/MyStuff/MyClass
arguments: ["@session"]
現在你的類是作爲服務(誰也想不到,就是這麼簡單!),你可以使用它你的控制器內:
class MyContainer extends Controller{
public function SomeKindOfAction(){
$myClass = $this->get('my.myClass');
}
}
現在你不必去想構造以及如何爲了獲得你的物品,DI容器會爲你做。如果你想知道更多,請閱讀here。
相關問題
- 1. 服務中的Symfony2
- 2. Symfony2中 - 以服務
- 3. Symfony2的從服務
- 4. Symfony2 Web服務
- 5. Symfony2服務
- 6. 服務DependencyInjection在Symfony2中
- 7. 創建symfony2服務
- 8. Symfony2注入服務
- 9. 瞭解Symfony2服務
- 10. Symfony2創建服務
- 11. Symfony2服務結構
- 12. 添加Memcahed服務Symfony2的
- 13. Symfony2的安裝:symfony.webconfigurator服務
- 14. Symfony2的服務不是單
- 15. 使用服務的Symfony2
- 16. Symfony2從非服務類訪問服務
- 17. symfony2中的服務 - 服務文件的外觀應該如何?
- 18. symfony2參數中的動態服務ID?
- 19. 從Symfony2中的服務重定向
- 20. 在Symfony2中作爲服務的功能
- 21. Symfony2服務構造函數中的getUser
- 22. symfony2服務中的空會話編號
- 23. Symfony2獲取在服務中調用服務的控制器
- 24. 使用Symfony2創建服務
- 25. Symfony2和Marketplace Web服務
- 26. 重定向服務 - symfony2
- 27. Symfony2 LiipFunctionalTestBundle覆蓋@validator服務
- 28. symfony2 SoapServer EntityManager注入服務
- 29. symfony2覆蓋服務security.authentication.manager
- 30. Symfony2服務循環依賴?
非常感謝 – falinsky 2012-03-02 13:59:24