删除Symfony2范围扩展通知

时间:2012-04-19 11:39:55

标签: php dependency-injection symfony scope

我正在尝试通过删除对服务容器的引用来加速我的堆栈。在这种情况下,我只需要请求:

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%

这不行。有什么想法吗?

修改 我意识到我可以将此服务的范围更改为请求,但在这种情况下,这不是一个选项。

1 个答案:

答案 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容器的代码中挖掘; - )