Dependency injection mezi službami
- microcz
- Člen | 62
Předpokládám, že už se tu asi něco podobného řešilo.
Líbí se mi způsob, jakým pomoci dependency injection můžu do presenteru „vstříknout“ libovolnou službu (service), bez nutnosti ji někdě složitě vyhledávat a „setovat“ ručně.
Chtěl bych tento mechanismus využít i mezi samotnými službami, mezi kterými u mě existují závislosti. To jsem si ale všiml, že nejde. Dokonce mi do služeb nejde nainjektovat ani DibiConnection, zatímco do presenterů ano. Je toto záměr, nebo něco dělám blbě?
Příklad
/** @var DibiConnection @inject */
public $db;
funguje vrámci Presenterů, ale ve službách je db vždy null
Editoval microcz (18. 5. 2014 18:37)
- David Matějka
- Moderator | 6445
Staci pokud uvedes v konstruktoru spravny typehint. Pak se zavislost preda
automaticky. @inject
anotace a podobne berlicky maji smysl pouze
v presenterech, kde by hrozil nejaky dependency hell v konstruktoru, viz treba
par dni stare tema https://forum.nette.org/…inych-sluzeb