Injectování formulářů přes factory vs přes service interface
- ondrej.svec
- Člen | 3
Ahoj,
může mi prosím někdo vysvětlit rozdíl, kdybych si formuláře
zaregistroval jako factories
oproti tomu, když si vytvořím interface s metodou create(), který
zaregistruji jako service?
Proč bych měl používat který způsob? Který je lepší?
EDIT:
Nejde to udělat jenom tak, že bych zaregistroval formulář jako factory a DI
mi tam nastrkal závislosti sám?
Proč bych měl zbytečně vytvářet nějaké továrničky (interfacy), když bych (podle mě) mohl do DI zaregistrovat přímo formuláře?
Editoval ondrej.svec (25. 6. 2014 13:02)
- Michal Vyšinský
- Člen | 608
Ahoj,
generované factories (interface s metodou create) v naprosté většině případů stačí. Výhoda je v tom, že závislosti formuláře máš jen v konstruktoru samotného formuláře (na jednom místě). Nette samo vytvoří implementaci toho interface a postará se o předání závislostí.
Vlastní factory se může hodit tam, kde potřebuješ nějakou složitější logiku pro vytváření určitého formuláře. Výhodou může být větší flexibilita, nicméně máš pak závislosti vypsané jak v konstruktoru factory, tak v konstruktoru formuláře. Když se něco změní, tak musíš přidat závislost na dvou místech.