1

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

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%

这虽然行不​​通。有任何想法吗?

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

4

1 回答 1

4

您希望将服务的request范围限制在范围内,因为您需要确保传递了正确的Request实例 - 例如,如果您是从子请求中使用服务,或者是否通过主请求。将您的服务配置调整为:

services:
    email_error_message:
        class: Core\MyBundle\Services\Email\ErrorMessage
        scope: request
        arguments: [ @request, %params% ]

有关更多详细信息,请参阅文档

根据您的问题编辑进行编辑,您无法更改范围。在这种情况下,您的语法应如下所示:

services:
    email_error_message:
        class: Core\MyBundle\Services\Email\ErrorMessage
        arguments: [ @request=, %params% ]

带有附加=符号。请注意,我在任何地方都没有看到这个引用,它来自于挖掘 DI 容器的代码;-)

于 2012-04-19T15:03:28.340 回答