pouziti inject v SignInFormFactory nebo jne
- CZechBoY
- Člen | 3608
Jde to zapnout, ale potřebuješ určitě ve finální továrně použít
tuhle zkratku?
Inject se používá právě v base* třídách, kde potom přepisuješ
konstruktor.
Konstruktor je nejčistší řešení – přijde někdo novej, kdo neviděl
nikdy Nette a nebude mít vůbec ponětí co je @inject anotace.
- Matey
- Člen | 142
https://doc.nette.org/…dependencies#…
Povolíš to takto:
services:
-
class: App\Forms\BaseFormFactory
inject: yes
Editoval Matey (5. 1. 2017 1:00)
- Šaman
- Člen | 2667
Matey napsal(a):
https://doc.nette.org/…dependencies#…
Povolíš to takto:services: - class: App\Forms\BaseFormFactory inject: yes
Jestli se v tomhle poslední dobou nic nezměnilo, tak to nebude fungovat
(což je dobře).
V tomto případě vytváříš instanci BaseFormFactory
, což
nechceš. Chceš instancovat její potomky.
Takže by bylo potřeba pro každého potomka natavit to
inject: yes
.
Tento problém právě řeší rozšíření decorator
, které
všechny objekty typu BaseFormFactory
ještě dodatečně upraví.
Třeba jim nastaví translator.
- Tomáš Votruba
- Moderator | 1114
Decorator se hodí i v pár dalších případech – tady k němu najdeš mini návod.