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 Web服務
- 3. Symfony2服務
- 4. 服務DependencyInjection在Symfony2中
- 5. 創建symfony2服務
- 6. Symfony2服務結構
- 7. Symfony2創建服務
- 8. 瞭解Symfony2服務
- 9. Symfony2注入服務
- 10. 添加Memcahed服務Symfony2的
- 11. Symfony2的服務不是單
- 12. Symfony2的安裝:symfony.webconfigurator服務
- 13. symfony2服務中的空會話編號
- 14. symfony2參數中的動態服務ID?
- 15. symfony2中的服務 - 服務文件的外觀應該如何?
- 16. Symfony2 LiipFunctionalTestBundle覆蓋@validator服務
- 17. soap web服務與symfony2
- 18. Symfony2服務循環依賴?
- 19. 錯誤在Symfony2中用作服務
- 20. 如何在Symfony2中擴展Doctrine服務?
- 21. 在Symfony2中調用createForm()和generateUrl()服務
- 22. 在服務中使用Doctrine Symfony2
- 23. 在Symfony2中注入Twig作爲服務
- 24. 在Symfony2服務中回調失敗
- 25. Symfony2的:我的第一個服務
- 26. 作爲服務實施的Symfony2 ACL?
- 27. 什麼是需要在Symfony2的服務
- 28. 移動Symfony2的服務配置捆綁
- 29. 存取方法通過服務--- Symfony2的
- 30. symfony2使用來自其他服務的數據配置服務
非常感謝 – falinsky 2012-03-02 13:59:24