Flokkur: Dependency Injection Container

Quick Start Symfony DI (Dependency Injection) Tutorial

Með því að , laugardaginn 14. ágúst, 2010 14:21

Hvað er Dependency Injection (DI)?

Háð inndælingu er tækni sem gerir ráð fyrir lauslega saman hluti innan hugbúnaðar. Almennt ef hlut þarf aðgang að virkni annars væri instantiated innra leiðir til vel saman kerfi. Með því að innleiða háð inndælingu við sprauta þarf hluti tilbúnar til notkunar (stundum einnig nefnt inversion stjórna - IOC). Taktu eftirfarandi dæmi:

  <? PHP
 bekk DecisionMaker {
     opinber virka makeDecision (array $ viðföng) {
         / / Vantar gagnagrunn millistykki
         $ DP = new DecisionParameters ();
         $ ParameterScore = $ DP-> getScore ($ viðföng);
         / * ...  Sumir fleiri ákvörðun rökfræði ...  * /
         aftur ($ parameterScore> 50);
     }
 } 

Þessi stykki af kóða er sagður vera þétt saman að DecisionParameters mótmæla. Endurskrifa ofangreindar í lauslega saman tísku við myndum hafa eitthvað eins og ....

  <? PHP
 bekk DecisionMaker {
     persónulegur $ _dp;
     opinber virka __construct ($ DP) {
         $ Þessu-> _dp = $ DP;
     }
     opinber virka makeDecision (array $ viðföng) {
         $ ParameterScore = $ þessu-> _dp-> getScore ($ viðföng);
         / * ...  Sumir fleiri ákvörðun rökfræði ...  * /
         aftur ($ parameterScore> 50);
     }
 } 

Þó að öðlast ávinning af lauslega saman kóða við erum að bæta flókið þannig að í hvert sinn hlut er instantiated Við höfum einnig að ræst ósjálfstæði og framhjá þessum í líka. Til dæmis þetta:

  $ Val = new DecisionMaker ();
 echo $ val-> makeDecision (array ('áreynsla' => 'lágt', 'aftur' => 'hár')); 

Nú verður því:

  $ DP = new DecisionParameters ();
 $ Val = new DecisionMaker ($ DP);
 echo $ val-> makeDecision (array ('áreynsla' => 'lágt', 'aftur' => 'hár')); 

Þetta ástand verður meira sársaukafull eins og the tala af ósjálfstæði fyrir flokk er aukinn, og hvað ef ósjálfstæði sig hafa ósjálfstæði? Þetta getur alveg fljótt orðið gjöf hlut martröð! Sláðu háð inndælingu gáma (eða ramma) ...
Halda áfram að lesa "Quick Start Symfony DI (Dependency Injection) Tutorial" »













Panorama Þema eftir Themocracy

8 gestir tengdir núna
6 gestir, 2 Botswana, 0 meðlimir
Max gestir í dag: 16 við 12:59 UTC
Þessi mánuður: 19 á 19-08-2011 06:09 UTC
Á þessu ári: 130 á 28-03-2011 22:40 UTC
Allra tíma: 130 á 28-03-2011 10:40 UTC