Quick Start Symfony DI (ovisnost Injection) Tutorial
Što je ovisnost Injection (DI)?
Ovisnost injekcija je tehnika koja omogućuje labavo spregnuti objekata unutar softverske aplikacije. Općenito, ako objekt zahtijeva pristup funkcionalnosti drugi da će to biti instanciraju interno vodi čvrsto spregnuti sustav. Uvođenjem ovisnost injekcije smo se uvelo željenih objekata spreman za korištenje (ponekad se također naziva inverzija kontrole - MOO). Uzmi sljedeći primjer:
<? Php klasa DecisionMaker { javnu funkciju makeDecision (polje $ parametri) { / / Trebate baze podataka adaptera $ DP = new DecisionParameters (); $ ParameterScore = $ DP-> getScore ($ parametri); / * ... Neki više odluka logike ... * / povratak ($ parameterScore> 50); } }
Ovaj dio koda je rekao da biti čvrsto spojeni DecisionParameters objekt. Prepisivanjem gore u labavo spregnuti modni ćemo imati nešto poput ....
<? Php klasa DecisionMaker { Privatni $ _dp; javnu funkciju __construct ($ DP) { $ This-> _dp = $ DP; } javnu funkciju makeDecision (polje $ parametri) { $ ParameterScore = $ this-> _dp-> getScore ($ parametri); / * ... Neki više odluka logike ... * / povratak ($ parameterScore> 50); } }
Dok stjecanja prednosti labavo spregnuti koda smo dodajući složenosti tako da svaki put kad objekt je instanciraju moramo instantiate svoje ovisnosti i proći tim u previše. Na primjer, ovo:
$ Izboru = new DecisionMaker (); echo $ izbor-> makeDecision (array ('napor' => 'nisko', 'povratak' => 'visoke'));
sada postaje:
$ DP = new DecisionParameters (); $ Izboru = new DecisionMaker ($ DP); echo $ izbor-> makeDecision (array ('napor' => 'nisko', 'povratak' => 'visoke'));
Ova situacija postaje bolno kao broj zavisnosti za klasu je povećana, a što ako zavisnosti sami ovisnosti? To se može vrlo brzo postati noćna mora uprave objekt! Unesite posude ovisnost (ili okvira) injekcije ...
Nastaviti čitanje 'Quick Start Symfony DI (ovisnost Injection) Vodič »»
















































