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