我有一个FooService
从另一个配置服务获取一些数据.
我有配置服务,因为配置因请求数据而异.配置服务已RequestStack
注入并构建相关的配置数组.
我FooService
看起来如下:
class Foo { private $config; /** * @param Config $config */ public function __construct(Config $config) { $this->config = $config->getData(); } }
然而,我没有注入服务,而是只注入方法调用结果getData
,因为它更容易进行单元测试.我不需要模拟配置,我只能传递一个数组.
我目前service.yml
的定义如下:
config: ... foo: class: Kopernikus\LeBundle\Service\Foo arguments: - @config
我尝试foo
通过以下方式更改工厂方法的定义:
foo: class: Kopernikus\LeBundle\Service\Foo arguments: - [@config, getData]
然而,这也注入了整个服务.
如何将服务的方法结果作为另一个服务的参数注入?
你可以用表达式语言实现这一点(Symfony 2.4中的新功能)
如在文档中描述在这里你可以做一些事情为例:
config: ... foo: class: Kopernikus\LeBundle\Service\Foo arguments: ["@=service('config').getData()"]
希望这有帮助