Inject služeb implementujících interface

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jan.vesely
Člen | 4
+
0
-

Ahoj,
mám definované služby implementující určitý interface, je jich více. Potřeboval bych je všechny nějakým hezkým způsobem dostat do jiné služby. Jde to nějak pomocí automatického předávání služeb DI containerem (injecty), nebo to lze udělat pouze tímto způsobem?

sluzbaDoKtereJeChciDostat:
		class: \MojeTrida
		setup:
			- zaregistruj( @sluzbaImplementujiciInterface1 )
			- zaregistruj( @sluzbaImplementujiciInterface2 )
			- zaregistruj( @sluzbaImplementujiciInterface3 )

Předem díky všem za odpovědi…:)

Filip Procházka
Moderator | 4668
+
0
-

Standardní postup je všem dát nějak tag a ve vlastním compiler extension najít všechny služby s tagem a připojit je. Třeba takto.

jan.vesely
Člen | 4
+
0
-

Super, díky moc, přesně to jsem potřeboval vědět…:)

mkoubik
Člen | 728
+
0
-

Mně se osvědčilo používat jako tag právě název toho interface, pak se v tom neztratíš.

jan.vesely
Člen | 4
+
0
-

To zní rozumně, díky…:)