我正在尝试通过删除对服务容器的引用来加速我的堆栈。在这种情况下,我只需要请求:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments: [ @request, %params ]
但是,这会引发范围扩大的问题。我现在不关心重构代码,我只想通过添加strict = true来消除警告。但我似乎无法正确使用YAML语法:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments:
- { type: service, id: request, strict: false }
- %params%
这不行。有什么想法吗?
修改 我意识到我可以将此服务的范围更改为请求,但在这种情况下,这不是一个选项。
答案 0 :(得分:4)
您希望将服务范围限制在request
范围,因为您需要确保传递了正确的Request
实例 - 如果您在子请求中使用该服务例如,或者是否通过主要请求。将您的服务配置调整为:
services:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
scope: request
arguments: [ @request, %params% ]
有关详细信息,请参阅the docs。
根据您的问题编辑编辑,您无法更改范围。在这种情况下,您的语法应如下所示:
services:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments: [ @request=, %params% ]
附加=
符号。请注意,我没有在任何地方看到这个引用,它来自于在DI容器的代码中挖掘; - )