Symfony服务注入语法

med*_*ock 6 php symfony

我正在研究由另一家公司实施的Symfony 2应用程序,并且遇到了以下服务定义:

service_id:
    class: 'path\to\class'
    calls:
       - [setRequest, ['@?request=']]
Run Code Online (Sandbox Code Playgroud)

我知道问号是什么@?request=意思(如果服务不存在,setRequest不会被调用),但是等号的末尾是什么意思呢?

谢谢!

pre*_*ldt 7

等号用于告诉容器忽略范围违规.request是在特殊范围内,如果您在不同的范围内使用它,容器会抛出异常.

范围在Sf 2.8中已弃用,在Sf 3.0中已删除.请参阅https://symfony.com/doc/2.8/service_container/scopes.html

此外,从Symfony 2.4开始,你应该使用request_stack:http://symfony.com/blog/new-in-symfony-2-4-the-request-stack