Jak přidat jednu službu poděděnému modelu?
- Hafran
- Člen | 121
Zdravím,
mám BaseModel, který má v konstruktoru specifikované základní služby
(db, cache, session atd.). Ostatní modely od něj dědí abych to nemusel
pořád opakovat, ale nevím jak to udělat když chci přidat další službu
do poděděného ExtendedModelu. Tedy potřebuji v něm například db, cache,
session + třeba authenticator. Když přepíšu konstruktor, tak si musím
opět předat všechny služby do ExtendedModelu a to je teda zbytečné
nějaký BaseModel mít. :/
Nejde ta jedna služba tedy nějak elegantně injektovat jako do
presenterů?
- ViPEr*CZ*
- Člen | 817
No já spíš myslím, že dotyčnému vadí přepisovat co už jednou má napsaný. Autowire nevyřeší to, že musím napsat skoro stejný konstruktor. Ale chytřejší IDE to vcelku řeší, vygeneruje konstruktor s parent voláním a předá vše potřebné. Pak stačí jen rozšiřovat. I když teda model by zrovna nemusel vědět nic o zmíněných službách.
- Šaman
- Člen | 2666
Jinak inject* metody nejsou nic víc než setter, který se nastavuje automaticky pomocí autoWire. Pokud ti nevadí, že v modelu nebude AW fungovat a budeš si muset v configu tu metodu zavolat ručně, tak samozřejmě můžeš dál používat i settery (klidně pojmenované inject*). Já to tak nějakou dobu dělal, než jsem si zvykl na konstruktory.