Lekce 6 - Předávání závislostí pomocí Dependency Injection
V minulé lekci, Špatné způsoby předávání závislostí - Singleton a SL, jsme dokončili průlet špatnými způsoby předávání závislostí ve vícevrstvých aplikacích. Celkově to byla jakákoli statika včetně Singletonu, ale také i předávání kontejneru se závislostmi, známé jako vzor service locator, případně různé variace těchto způsobů.
Dnes si na příkladu s evidencí automobilů ukážeme, jak správně předávat závislosti.
Pracné způsoby
Jediným nám známým správným způsobem je zatím závislosti předávat
ručně, jednu po jedné. To je také způsob, který jsme si ukázali na samém
začátku kurzu. Vytvořili jsme si instanci databáze již v index.php a tu
postupně předávali do kontroleru a z něj do modelu, kde byla potřeba.
Ačkoli je tento způsob návrhově korektní, dokážete si jistě představit,
kolik práce by dalo takto předávat několik závislostí i jen ve středně
velké aplikaci. A jelikož jsou kontrolery tvořené automaticky routerem,
museli bychom navíc poznat jaké závislosti jakému kontroleru předat. Minule
jsem slíbil, že váš již nebudu trápit se špatnými řešeními a
otázkami. Dnešní lekce naopak přinese odpovědi na všechno. Vážně
Co bylo špatně?
Ve všech představených řešeních jsme se snažili zohýbat kód tak, abychom nemuseli závislosti předávat. Toho ovšem NELZE dosáhnout bez negativních dopadů. Všechny podobné pokusy budou vždy končit neúspěchem. Pokud nepředáme každé třídě jen to, co potřebuje, vždy bude mít k dispozici více než je nutné a řešení bude:
- nebezpečné
- globální
- nezapouzdřené
- návrhově špatně
Závislosti musíme předávat, přesně pro každou třídu zvlášť.
Automatizace
Dobrá zpráva je, že se předávání závislostí dá zautomatizovat. To znamená, že každá třída dostane jen to co potřebuje a tyto závislosti jí budou předány automaticky. K tomu potřebujeme 3 věci:
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Obsah článku spadá pod licenci Premium III, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V tutoriálu vysvětlíme proč jsme předtím předávali závislosti špatně, co je Inversion of Control a jak funguje návrhový vzor Dependency Injection v praxi.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.