DI základní informace…

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

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
+
0
-

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
+
0
-

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
+
0
-

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.

none_
Člen | 16
+
0
-

Jo, tak to je to, co jsem nevěděl… Nebo spíš nepochopil z fóra.:)

Filip Procházka
Moderator | 4668
+
0
-

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é :)