我有一个问题,为什么symfony使用服务而不是直接“使用”到控制器。
我有一个名为DisplayManager的类,我将此类声明为服务。
为什么不使用“使用DisplayManager ”
将DisplayManager直接用于控制器由于
答案 0 :(得分:2)
考虑“服务”的好处是,您开始考虑将应用程序中的每个功能分成一系列服务。由于每项服务只执行一项工作,因此您可以轻松访问每项服务,并在您需要的任何地方使用其功能。每个服务也可以更容易地进行测试和配置,因为它与应用程序中的其他功能分开。这个想法被称为service-oriented architecture,并不是Symfony甚至PHP独有的。围绕一组独立的服务类构建应用程序是一个众所周知且值得信赖的面向对象的最佳实践。这些技能是几乎任何语言成为优秀开发人员的关键。
http://symfony.com/doc/current/service_container.html
建议将您的班级定义为服务的问题:
这里有一个很好的例子:
http://symfony.com/doc/current/service_container.html#what-is-a-service-container
效果优势:
该服务具有默认条件,允许相关类仅实例化一次。
想象一个有5个依赖关系的类(以及它们的依赖关系)并且已经在我们系统的20个部分中使用了,如果我们不将这个类定义为服务呢?
但是,不需要将您的类定义为服务,除了您的依赖项外,这将始终取决于系统的体系结构以及完成其类的任务。
答案 1 :(得分:0)
控制器仅用于接收请求(http)并生成响应(http)。不再。从不。
服务是完全独立的类,您可以在任何地方使用它们。此外,通过服务,您可以利用DependencyInjection
。
服务更容易测试。
服务(如控制器等等)必须承担责任。
等等......