我有一個FooService
從另一個配置服務獲取一些數據。如何將服務的方法結果作爲另一個服務的參數注入?
我有配置服務,因爲配置根據請求數據的不同而不同。配置服務已注入RequestStack
並構建相關的配置數組。
我FooService
如下所示:
class Foo
{
private $config;
/**
* @param Config $config
*/
public function __construct(Config $config) {
$this->config = $config->getData();
}
}
然而代替注射服務的,我更願意僅注入的getData
方法調用的結果,因爲它是單元測試更簡單。我不需要模擬配置,我只需傳遞一個數組。
我現在service.yml
具有類似的定義:
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- [@config, getData]
然而,這也注入了整個服務:
config:
...
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- @config
我試圖通過改變我的定義foo
像工廠方法。
如何將服務的方法結果作爲另一個服務的參數進行注入?
這裏的括號太多了,因爲它們注入了一個數組的數組。只需要'「@ = service('config')。getData()」'就足夠了。 =) – k0pernikus
從版本** 3開始,它已經被移到[here](http://symfony.com/doc/3.3/service_container/expression_language.html)** ** – Trix