如何将控制器定义为服务
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何将控制器定义为服务
在本书中,您已经了解了扩展基础时如何轻松地使用控制器控制器类。虽然这可以正常工作,但也可以将控制器指定为服务。
请注意
将控制器指定为服务需要做更多的工作。主要的优点是整个控制器或传递给控制器的任何服务都可以通过服务容器配置进行修改。这在开发开源包或将在不同项目中使用的包时特别有用。
第二个优势是你的控制器更加“沙盒化”。通过查看构造函数参数,很容易看出这个控制器可以做什么,也可以不做什么。而且因为每个依赖项都需要手动注入,所以当你的控制器变得太大时就更明显了(例如,如果你有很多构造函数参数)。来自最佳实践也适用于定义为服务的控制器:避免将业务逻辑放到控制器中。相反,注入完成大部分工作的服务。
因此,即使您没有将控制器指定为服务,您也可能会在一些开源Symfony包中看到这一点。ob娱乐下载理解这两种方法的优缺点也很重要。
将控制器定义为服务
控制器可以像其他类一样定义为服务。例如,如果你有以下简单的控制器:
12 3 4 5 6 7 8 9 10 11 12
/ / src / AppBundle /控制器/ HelloController.php名称空间AppBundle\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;类HelloController{公共函数indexAction($的名字){返回新响应(身体的< html > < >你好”.$的名字.”!