Prečo je nette sandbox RouteFactory statická
- tino415
- Člen | 46
Prečítal som si článok o DI, potom som si pozrel video https://www.youtube.com/watch?… a akurát sa mi to hodí do alikácia a všimol som si že sandboxe v RouteFactory je funkcia createRoute statická, chcel by som sa spýtať prečo ?
Nemala by biť normálna a RouteFactory ako servis, aby som si cez DI vedel poslať prípadne nejaké servisy ?
- Jan Tvrdík
- Nette guru | 2595
Kdysi se to řešilo na GitHubu, závěr je asi takový, že je to v praxi jedno. Obě varianty jsou OK. Statická varianta byla zvolena (pokud si to dobře pamatuji) kvůli jednoduchosti pro začátečníky.
- Tomáš Votruba
- Moderator | 1114
IMHO je to bad
practise – viz komentáře u commitu, jelikož očividně navádí
začátečníky k uvažování „žádná závislost“ ⇒ „statické
metody“.
Také na školení jsem se s tím párkrát potkal. Zbytečně.
Doporučuju používat běžný přístup před touto změnou, tedy:
services:
- App\RouterFactory
router: @App\RouterFactory::createRouter
Editoval Tomáš Votruba (5. 9. 2015 16:22)
- Jan Tvrdík
- Nette guru | 2595
DI funguje i pro statické metody. Akorát nepředáváš závislosti do konstruktoru, ale jako argumenty dané metody.