IoC v Nette konfigurovaný přes config.neon

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

Zdravím,

po dlouhé době jsem se zase na chvíli dostal k PHP/Nette. Zajímalo by mě, jestli je v nette nějaká podpora pro IoC (inversion of control), obdobně třeba jako ve Springu (Java)? Jedu nette 2.0-beta.

Koukal jsem na https://forum.nette.org/…guje-v-nette / https://forum.nette.org/…cy-injection , z čehož jsem pochopil, že IoC zde je. Každopádně v příspěvku je jenom spousta PHP kódu a žádná konfigurace přes config.neon.

Moje otázka tedy zní – můžu nějak snadno docílit toho, že si v config.neon zadefinuji služby (DAO, services, …), což jsou implementace nějakých rozhraní, a ty si budou mezi sebou injectovat závislosti, když se budou vytvářet/používat? Můžu takto injectovat i do Presenterů? (presenter bude volat DAO nebo službu)

Koukal jsem, že v tom configu už např. authenticator service je, takže to asi jde, jenom jsem nějak nenašel ten správný dokument s popisem, jak to přesně funguje.

Dík

Savannah
Člen | 30
+
0
-

Nikdo neví? :/

Filip Procházka
Moderator | 4668
+
0
-

Formát pro configu máš zde: https://api.nette.org/…der.php.html#26 (číst i s úvodní větou).

Injektovat do presenterů nejde. Musel by jsi si implementovat vlastní IPresenterFactory a zavést si konvenci (třeba @inject(authenticator) u vlastností presenteru a pak to reflexí projet a vstříknout :)