Mam FooService
, który pobiera niektóre dane z innej usługi konfiguracji.Jak wprowadzić wynik metody usługi jako argument dla innej usługi?
Mam tę usługę konfiguracji, ponieważ konfiguracja różni się w zależności od danych żądania. Usługa konfiguracji ma wtyczkę RequestStack
i tworzy odpowiednią tablicę konfiguracji.
My FooService
wygląda następująco:
class Foo
{
private $config;
/**
* @param Config $config
*/
public function __construct(Config $config) {
$this->config = $config->getData();
}
}
Jednak zamiast wstrzykiwania usługę, wolę wstrzykiwać tylko wynik metoda połączenia z getData
, jak to jest prostsze dla testów jednostkowych. Nie będę musiał kpić z konfiguracji, mogę po prostu przekazać tablicę.
mojego obecnego service.yml
ma definicji takich jak:
config:
...
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- @config
Próbuję zmienić moje foo
definicję jak dla metod fabrycznych poprzez:
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- [@config, getData]
to jeszcze zbyt wstrzykuje całą usługę.
Jak wprowadzić wynik metody usługi jako argument dla innej usługi?
Nawiasy są zbyt duże, ponieważ wprowadzają tablicę tablicy. Po prostu '" @ = service ('config'). GetData() "" wystarcza. =) – k0pernikus
Został przeniesiony [tutaj] (http://symfony.com/doc/3.3/service_container/expression_language.html) od wersji ** 3 ** – Trix