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