Pikakäynnistys Symfony DI (Dependency Injection) Tutorial
Mikä on Riippuvuus Injection (DI)?
Riippuvuus injektio on tekniikka, joka mahdollistaa väljästi kytketyt esineitä sovellus. Yleensä jos esine edellyttää pääsyä toimintoja toisen olisi instantiated sisäisesti johtaa tiiviisti kytketyt järjestelmät. Toteuttamalla riippuvuus injektio tuomme tarvittavat esineet käyttövalmis (kutsutaan joskus myös käännellen ohjaus - IOC). Otetaan esimerkki:
<? Php class DecisionMaker { julkisessa tehtävässä makeDecision (array $ parametrit) { / / Tarvitaan tietokantaan sovitin $ Dp = uusi DecisionParameters (); $ ParameterScore = $ DP-> getScore ($ parametrit); / * ... Jotkut enemmän päätöksen logiikkaa ... * / return ($ parameterScore> 50); } }
Tämä koodinpätkä on sanottu olevan tiukasti kytketty DecisionParameters esine. Uudelleenkirjoitus edellä väljästi kytketyt muoti olisimme jotain ....
<? Php class DecisionMaker { yksityiset $ _dp; julkisessa tehtävässä __construct ($ DP) { $ This-> _dp = $ DP; } julkisessa tehtävässä makeDecision (array $ parametrit) { $ ParameterScore = $ this-> _dp-> getScore ($ parametrit); / * ... Jotkut enemmän päätöksen logiikkaa ... * / return ($ parameterScore> 50); } }
Vaikka Hyötyjen saanti väljästi kytketyt koodi lisäämme monimutkaisuus siten, että joka kerta objekti instantiated meidän on myös instanssia sen riippuvuudet ja välittää liian. Esimerkiksi tämä:
$ Valinta = uusi DecisionMaker (); echo $ valinta-> makeDecision (array ('vaivaa' => 'pieni', 'Palaa' => 'suuri'));
nyt tulee:
$ Dp = uusi DecisionParameters (); $ Valinta = uusi DecisionMaker ($ DP); echo $ valinta-> makeDecision (array ('vaivaa' => 'pieni', 'Palaa' => 'suuri'));
Tilanne muuttuu tuskallinen määrä riippuvuuksia luokka on kasvanut, ja mitä jos riippuvuudet ovat itse riippuvuuksia? Tämä voi hyvinkin nopeasti tulla esine hallinto painajainen! Anna riippuvuus injektio kontit (tai kehyksiä) ...
Jatka lukemista "Quick Start Symfony DI (Dependency Injection) Tutorial" »
















































