我正在重构我的控制器,将其转化为服务,想知道不将整个服务容器注入到我的控制器中是否会有性能影响。
这种方式是否更有效:
innova.path.controller:
class: %innova.controller.path.class%
arguments:
entityManager: @doctrine.orm.entity_manager
session: @session
securityContext: @security.context
router: @router
translator: @translator
pathManager: @innova.manager.path_manager
calls:
- [setRequest, ["@?request="]]
scope: request
比如说,比这更好的例子?
innova.path.controller:
class: %innova.controller.path.class%
arguments: [@service_container]
Controller
类的内容,因为我想向您展示标准控制器和定义为服务的控制器(简单的PHP类)之间的区别。主要区别是扩展ContainerAware
(提供对DIC的访问)。当然,您是正确的 - 当您将控制器定义为服务时,可以轻松更改控制器类。关于Singleton模式
,您是错误的。有两个范围:容器
,原型
(以及额外的请求
)用于服务。请参阅:http://symfony.com/doc/current/cookbook/service_container/scopes.html - NHGServiceContainer
中有其他背景进程,而不仅仅是实例化请求的服务,这一点我不清楚。 - Elorfin