Moznost pridat alias sluzby v konfiguraci
- xr
- Člen | 94
Ahoj,
Je nejaka moznost pridat alias sluzby v konfiguracii?
Nieco taketo:
Vyssie uvedene je fajn a funguje, pokial nepouzivate dekoratory. Avsak pokial dekoratory pouzivate,
metoda callFooSetup
bude volana dvakrat,
pretoze vo vygenerovanom DI kontajneri createServiceBar
interne
vola createServiceFoo
, ale callFooSetup
volanie sa
nachadza v oboch metodach.
To ma neziaduce ucinky. Je mozne nejako pridat alias sluzby bez DI rozsirenia a uprav v PHP kode Nette? Diky!
Existuje ContainerBuilder::addAlias
metoda, ale je ju samozrejme
mozne volat len pocas vytvarania kontajneru v DI rozsireniach.
- David Grudl
- Nette Core | 8249
Ano, bar: @foo
není alias, ale vytvoření nové služby. Alias
lze přidat jen přes DI rozšíření.
- David Grudl
- Nette Core | 8249
A k čemu je to užitečné? U těch extensions to existuje jen z důvodu zpětné kompatibility, ale proč to dělat v konfigu nevím.
- xr
- Člen | 94
Robim nejaku magiu so sluzbami a potrebujem, aby pouzivali istu konvenciu nazvov. Zaroven vsak potrebujem, aby sa volali tak, ako boli povodne navrhnute (kvoli logickemu rozdeleniu). Je to zlozite na vysvetlenie.
Zjednodusene:
mam sluzbu logicky zaclenenu k nejakej casti aplikacie
moduleA.fooService
, ale zaroven chcem na rovnaku sluzbu pristupit
aj pomocou featureA.fooService
, inak povedane, sluzbu potrebujem
logicky zadelit do dalsej skupiny.
Chapem, ze je to okrajovy pripad.
Ak chces podotknut, ze aj tak nie je vhodne na sluzby pristupovat pomocou nazvu (vzhladom na princip DI), tak mas pravdu, ale potrebujem to z dovodu cyklickych zavislosti a poziadavku na „lazy loading“ sluzieb.