Quick Start Symfony DI (Dependency Injection) Tutorial
Wat is Dependency Injection (DI)?
Dependency injection is een techniek die het mogelijk maakt voor los gekoppelde objecten in een softwaretoepassing. Over het algemeen als een object moet de toegang tot de functionaliteit van een ander zou worden geïnstantieerd intern leidt tot strak gekoppelde systemen. Door de implementatie van dependency injection we Injecteer het benodigde objecten klaar voor gebruik (ook wel aangeduid met omkering van controle - IOC). Neem het volgende voorbeeld:
<? Php class DecisionMaker { publieke functie makeDecision (array $ parameters) { / / Noodzaak van de database adapter $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ parameters); / * ... Sommige meer beslissing logica ... * / return ($ parameterScore> 50); } }
Dit stuk van de code is gezegd dat nauw worden gekoppeld aan de DecisionParameters object. Het herschrijven van de hierboven in een losjes gekoppelde manier we iets hebben als ....
<? Php class DecisionMaker { private $ _dp; public function __construct ($ dp) { $ This-> _dp = $ dp; } publieke functie makeDecision (array $ parameters) { $ ParameterScore = $ this-> _dp-> getScore ($ parameters); / * ... Sommige meer beslissing logica ... * / return ($ parameterScore> 50); } }
Terwijl het verkrijgen van de voordelen van losjes gekoppelde code die we zijn het toevoegen van complexiteit zodanig dat elke keer dat een object wordt geïnstantieerd moeten we ook de afhankelijkheden instantiëren en deze pas in ook. Bijvoorbeeld deze:
$ Keuze = new DecisionMaker (); echo $ keuze-> makeDecision (array ('inspanning' => 'low', 'return' => 'high'));
wordt nu:
$ Dp = new DecisionParameters (); $ Keuze = new DecisionMaker ($ dp); echo $ keuze-> makeDecision (array ('inspanning' => 'low', 'return' => 'high'));
Deze situatie wordt steeds pijnlijker naarmate het aantal afhankelijkheden voor een klasse wordt verhoogd, en wat als de afhankelijkheden zelf hebben afhankelijkheden? Dit kan heel snel een object administratie nachtmerrie! Geef dependency injection containers (of kaders) ...
Continue reading 'Quick Start Symfony DI (Dependency Injection) Tutorial' »
















































