如何将控制器定义为服务
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何将控制器定义为服务
谨慎
将控制器定义为服务官方不推荐Symob娱乐下载fony。一些开发人员将它们用于非常具体的用例,例如DDD (领域驱动设计)和六角架构应用程序。
在控制器指南,您已经了解了扩展基础时如何轻松使用控制器控制器类。虽然这可以正常工作,但也可以将控制器指定为服务。即使您没有将控制器指定为服务,您也可能会在一些开源Symfony包中看到它们的使用,因此理解这两种方法可能是有用的。ob娱乐下载
这些是主要的优势将控制器定义为服务:
- 整个控制器和传递给它的任何服务都可以通过服务容器配置进行修改。这在开发可重用包时很有用;
- 你的控制器更加“沙盒化”。通过查看构造函数参数,很容易看出这个控制器可以做什么,不可以做什么;
- 由于依赖项必须手动注入,当你的控制器变得太大时(即如果你有很多构造函数参数),这就更加明显了。
这些是主要的缺点将控制器定义为服务:
- 创建控制器需要更多的工作,因为它们不能自动访问服务或基本控制器快捷方式;
- 控制器的构造函数可能很快变得过于复杂,因为必须注入它们所需的每个依赖项;
- 控制器的代码比较冗长,因为不能使用基本控制器的快捷方式,必须用一些代码行替换它们。
来自最佳实践对于定义为服务的控制器也有效:避免将业务逻辑放到控制器中。相反,注入完成大部分工作的服务。
将控制器定义为服务
控制器可以像其他类一样定义为服务。例如,如果你有以下简单的控制器:
12 3 4 5 6 7 8 9 10 11 12
/ / src / AppBundle /控制器/ HelloController.php名称空间AppBundle\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;类HelloController{公共函数indexAction($的名字){返回新响应(身体的< html > < >你好”.$的名字.”!