Ho un FooService
che recupera alcuni dati da un altro servizio di configurazione.Come iniettare il risultato del metodo di un servizio come argomento per un altro servizio?
Ho il servizio di configurazione poiché la configurazione è diversa a seconda dei dati della richiesta. Il servizio di configurazione ha iniettato il RequestStack
e crea l'array di configurazione pertinente.
mio FooService
appare come segue:
class Foo
{
private $config;
/**
* @param Config $config
*/
public function __construct(Config $config) {
$this->config = $config->getData();
}
}
Eppure, invece di iniettare del servizio, preferisco di iniettare solo il risultato della chiamata al metodo getData
, in quanto è più semplice per i test di unità. Non ho bisogno di prendere in giro la configurazione, posso solo passare un array.
Il mio attuale service.yml
ha una definizione simile:
config:
...
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- @config
Ho provato a cambiare la mia definizione foo
come per i metodi di fabbrica tramite:
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- [@config, getData]
ancora anche questo inietta l'intero servizio.
Come iniettare il risultato del metodo di un servizio come argomento per un altro servizio?
Le parentesi sono troppo qui, poiché iniettano una matrice di un array. Giusto '" @ = servizio ('config'). GetData() "' sufficiente. =) – k0pernikus
È stato spostato [qui] (http://symfony.com/doc/3.3/service_container/expression_language.html) dalla versione ** 3 ** – Trix