Quick Start Symfony DI (Dependency Injection) Esercitazione
Qual è Dependency Injection (DI)?
L'iniezione di dipendenza è una tecnica che permette di oggetti debolmente accoppiati all'interno di un'applicazione software. In genere se un oggetto richiede l'accesso alle funzionalità di un altro sarebbe un'istanza internamente che porta ai sistemi strettamente accoppiati. Con l'implementazione di iniezione di dipendenza si iniettare gli oggetti necessari pronto per l'uso (a volte indicato anche l'inversione di controllo - CIO). Prendiamo il seguente esempio:
<? Php classe DecisionMaker { makeDecision funzione pubblica (array $ parametri) { / / Bisogno della scheda del database $ Dp = new DecisionParameters (); ParameterScore $ = $ dp-> getScore ($ parametri); / * ... Decisione logica ancora un po '... * / return ($ parameterScore> 50); } }
Questo pezzo di codice si dice che sia strettamente accoppiati all'oggetto DecisionParameters. Riscrivere il sopra in modo loosely coupled avremmo qualcosa come ....
<? Php classe DecisionMaker { private $ _DP; pubblica funzione __construct ($ dp) { $ This-> _DP = $ dp; } makeDecision funzione pubblica (array $ parametri) { ParameterScore $ = $ this-> _DP-> getScore ($ parametri); / * ... Decisione logica ancora un po '... * / return ($ parameterScore> 50); } }
Mentre ottenendo i vantaggi di codice indefinito stiamo aggiungendo complessità tale che ogni volta che un oggetto viene istanziato abbiamo anche istanziare le sue dipendenze e passare anche in questi. Per esempio, questo:
$ Scelta = DecisionMaker new (); echo $ scelta-> makeDecision (array ('sforzo' => 'bassa', 'ritorno' => 'alta'));
ora diventa:
$ Dp = new DecisionParameters (); $ Scelta = new DecisionMaker ($ dp); echo $ scelta-> makeDecision (array ('sforzo' => 'bassa', 'ritorno' => 'alta'));
Questa situazione diventa più doloroso come il numero di dipendenze per una classe è aumentato, e se le dipendenze stessi hanno dipendenze? Questo può molto rapidamente diventare un incubo amministrazione oggetto! Entrare nei contenitori iniezione di dipendenza (o quadri) ...
Continua a leggere 'Quick Symfony Avvio DI (Dependency Injection) Esercitazione' »
















































