避免在Symfony 2 Controller中多次定义服务

时间:2013-07-30 09:00:19

标签: php symfony

我的控制器中有多个函数,很多函数都调用$usermgr = $this->get('usermanager');(其中usermanager是config.yml中定义的服务)。

这意味着代码会重复多次。有没有办法在控制器中定义$ usermgr一次?通常我会考虑一个__construct,但我相信用控制器是不可能的?

1 个答案:

答案 0 :(得分:1)

在控制器中的多个方法中获取相同的服务没有任何问题。

您可以将控制器更改为服务(http://symfony.com/doc/current/cookbook/controller/service.htmlhttp://richardmiller.co.uk/2011/04/15/symfony2-controller-as-service/),然后注入该服务。虽然这遵循最佳实践,但您目前的方式并没有错。

您无法使用Symfony base Controller类在构造函数中请求该服务,因为初始化后会设置服务容器。