【发布时间】:2016-03-16 08:54:10
【问题描述】:
我有一个 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]
但这也注入了整个服务。
如何将服务的方法结果作为另一个服务的参数注入?
【问题讨论】:
标签: php symfony dependency-injection