Başka bir yapılandırma hizmetinden bazı verileri getiren bir FooService
var.Bir hizmetin başka bir hizmet için argüman olarak nasıl bir yöntem sonucu enjekte edilir?
Yapılandırma isteğine bağlı olarak yapılandırma farklı olduğundan bu yapılandırma hizmetim var. Yapılandırma hizmeti, RequestStack
enjekte edilir ve ilgili yapılandırma dizisini oluşturur.
class Foo
{
private $config;
/**
* @param Config $config
*/
public function __construct(Config $config) {
$this->config = $config->getData();
}
}
Oysa yerine hizmeti enjekte birim test için basit, ben, getData
tek yöntemi çağrısı sonucu enjekte etmek tercih şu şekildedir:
Benim FooService
görünüyor. Yapılandırmaya alay etmem gerekmeyecek, sadece bir dizi geçirebilirim.
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- [@config, getData]
Henüz bu çok bütün hizmet enjekte:
config:
...
foo:
class: Kopernikus\LeBundle\Service\Foo
arguments:
- @config
ben yoluyla fabrika yöntemleri için böyle benim foo
tanımını değiştirmeyi denedim: Benim şimdiki service.yml
gibi bir tanım vardır.
Bir hizmetin başka bir hizmet için argüman olarak nasıl bir yöntem sonucu enjekte edilir?
Köşeler burada bir dizi dizi enjekte ettiklerinden çok fazladır. Sadece '" @ = hizmet ('config'). GetData() "' yeterlidir. =) – k0pernikus
[**] sürümünden beri burada (http://symfony.com/doc/3.3/service_container/expression_language.html) taşındı. ** 3 – Trix