DI základní informace…
- none_
- Člen | 16
Zdravím,
chtěl jsem se zeptat, zda jsou už někde dostupné ucelené informace o Nette
a DI. To, na co jsem zatím narazil, byly pouze vytržené kusy kódu bez
uceleného příkladu a hlavní stránka v dokumentaci, která by měla toto
vše objasňovat stále nefunguje a nevypadá, že by brzo začala.
Základní problém pro mě je např. jak injektovat nějaké proměnné v presenteru? Což mi přijde jako nutný základ, protože bez toho nemá injekce podřízených objektů smysl (IMHO).
- Jan Tvrdík
- Nette guru | 2595
none_ wrote:
Základní problém pro mě je např. jak injektovat nějaké proměnné v presenteru?
Kam je chceš injektovat?
- none_
- Člen | 16
No když si vezmu jako ukázkovou implementaci Spring Framework, tak tam je
to řešený tak, že se téměř všechny proměnné inicializujou pomocí DI a
XML konfiguráku.
Tzn do controlleru (presenteru) injektuju nějaké business objekty, do business
objektů injektuju nějaké DAO a tak podobně.
A to je přesně to, co chci udělat. Tzn do presenteru injektovat objekt, který bude umožňovat např. práci s fotogalerií.
Editoval none_ (19. 6. 2011 11:12)
- Filip Procházka
- Moderator | 4668
Pozor na zmatení, neinjektuješ v presenteru, ale do presenteru. A do
presenteru ani injektovat nemusíš, protože máš přístupnout proměnnou
$context
, ve které máš celý DI Container.
Čili v Presenteru můžeš ke službám přistupovat přímo
$httpRequest = $this->context->httpRequest;
Pokud se ti nechce ohýbat PresenterFactory
nebo implementovat
IPresenterFactory
, aby jsi mohl do presenteru nějak, podle sebe,
injektovat služby, pak se na to vykašli a používej v presenteru
$this->context
.
- Filip Procházka
- Moderator | 4668
Což značí, že jsi jenom špatně hledal, protože toho jsou tu tuny :) Na druhou stranu je tu opravdu hodně i zmatených příspěvků nebo vláken, takže chápu když se v tom člověk ztratí. Ale konec dobrý, všechno dobré :)