差异“扩展ContainerAware”和“注入容器”

时间:2014-12-15 07:23:26

标签: symfony containers

早上好,我有一个关于在Symfony中使用容器的简短问题。

对我来说,有两种很好的方法可以使用容器,例如一个班级:

  1. 将类定义为服务并在services.yml中注入容器

  2. 扩展“ContainerAware”类。

  3. 在这种情况下,最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

实际上取决于很多不同的东西。有些人认为绕过容器实际上是不好的做法,你应该只传递你需要的服务而不是从容器中取出它们。

对于我已经完成的项目,传入容器是正常的,通常在我们创建服务时,我们将类定义为服务并将其注入services.yml,但是,在处理命令时,调度员等我们只是扩展" containerAwareCommand"或" containerAwareEventDispatcher"分别。这背后的原因是他们想要更好地控制他们的服务,但是当使用特定于symfony的东西(例如命令)时,最好订阅框架方法。