Dependency Injection a loadovanie modelov

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

Ako loadovať model ? Pomocou DI? Alebo pomocou RobotLoaderu (klasicky si zažiadať tú triedu).

Nox
Člen | 378
+
0
-

Nejsem si jistý že ty termíny jsou zde použité dobře…

Pokud myslíš obecně jak získat/vytvořit nějaký objekt z business vrstvy… asi teda použít DI, případně + factory

Ale pokud znáš DI, pak nevím proč se dotazuješ…chtělo by to asi víc infa

Peppy
Člen | 137
+
0
-

Ja len, či by sa nedalo vytvoriť niečo ako ModelLoader, lebo písať do konfigu všetky služby modelov (a factories), je hlúpe. V kóde by bolo napr. $this->loadModel('user'); a fungovalo by to asi ako DI.

Nox
Člen | 378
+
0
-

No asi určitě… já nepíšu do configu skoro nic co se týče služeb

DI ale znamená předání příslušné závislosti (nejčastěji teda objektu) přes konstruktor/setter/argument…nevim jak to souvisí s tímto

Každopádně pokud to uděláš takto univerzálně, tak to bude nejspíš splňovat DRY, KISS a YAGNI, což je hezké

Není ModelLoader náhodou někde v těch kuchařkách? https://pla.nette.org/…cy-injection ?

Filip Procházka
Moderator | 4668
+
0
-

Jenom takový dodatek. Nezaměňovat RobotLoader a ModelLoader.

RobotLoader ti umožňuje načítat třídy automaticky, bez toho aby jsi musel psát require.

ModelLoader je univerzální způsob a zjednodušení jak se dostat k určitému typu třídy (modelu) a automaticky jim předávat základní závislosti. To je v podstatě zjednodušení DI, než přijdeš na to, jak DI používat.

Tharos
Člen | 1030
+
0
-

Peppy napsal(a):
… lebo písať do konfigu všetky služby modelov (a factories), je hlúpe.

Proč myslíš, že je to hloupé?

Peppy
Člen | 137
+
0
-

@Tharos: si nemyslím, že riešenie typu „všetko do konfigu“ je správne. A to riešenie od Miachaela Moravca, sa mi celkom páči.

Tharos
Člen | 1030
+
0
-

@Peppy: To vůbec nevede k tomu, že je vše v konfiguračním souboru… Ty pak jen z jednoho centrálního místa můžeš řídit celou hierarchii závislostí v aplikaci. Ale to je jedno, nechť model loader slouží. :)