קטגוריה: הזרקת תלות מכולות

Quick Start Symfony DI (הזרקת תלות) Tutorial

על ידי , יום שבת 14 אוגוסט 2010 14:21

מהי הזרקת תלות (די)?

הזרקת תלות היא טכניקה המאפשרת אובייקטים צימוד רופף בתוך יישום תוכנה. בדרך כלל אם אובייקט דורש גישה לפונקציונליות של אחר יהיה מופעים פנימי המוביל מערכות מצמידים בחוזקה. על ידי יישום הזרקת תלות אנו להזריק את החפצים הדרושים מוכן לשימוש (לעתים מכונה גם היפוך של שליטה - IOC). קחו את הדוגמה הבאה:

  <? Php
 בכיתה DecisionMaker {
     פונקציה makeDecision הציבור (מערך $ פרמטרים) {
         / / צריך את המתאם באתר
         $ = Dp חדש DecisionParameters ();
         ParameterScore $ = $ DP-> getScore ($ פרמטרים);
         / * ...  ההחלטה כמה יותר היגיון ...  * /
         לחזור ($ parameterScore> 50);
     }
 } 

קטע זה של הקוד הוא אמר להיות מצמידים בחוזקה אובייקט DecisionParameters. שכתוב לעיל באופן צימוד רופף היינו צריכים משהו כמו ....

  <? Php
 בכיתה DecisionMaker {
     פרטי $ _dp;
     הפונקציה __construct הציבור ($ dp) {
         זה $-> _dp = $ DP;
     }
     פונקציה makeDecision הציבור (מערך $ פרמטרים) {
         $ = $ זה parameterScore-> _dp-> getScore ($ פרמטרים);
         / * ...  ההחלטה כמה יותר היגיון ...  * /
         לחזור ($ parameterScore> 50);
     }
 } 

בעוד להשיג את היתרונות של קוד צימוד רופף אנחנו מוסיפים למורכבות כזה שבכל פעם אובייקט מופעים לנו גם להפעלת התלות שלה ולהעביר אלה מדי. לדוגמה, זה:

  $ בחירה = DecisionMaker חדש ();
 הד $ בחירה-> makeDecision (array ('מאמץ' => 'נמוך', 'לחזור' => 'גבוה')); 

עכשיו נעשה:

  $ = Dp חדש DecisionParameters ();
 $ בחירה = חדש DecisionMaker ($ dp);
 הד $ בחירה-> makeDecision (array ('מאמץ' => 'נמוך', 'לחזור' => 'גבוה')); 

מצב זה הופך להיות כואב יותר ככל שמספר תלות לשיעור מוגבר, ומה אם התלות עצמם יש תלות? זה יכול די מהר להפוך לסיוט הממשל חפץ! הזן הזרקת תלות מכולות (או מסגרות) ...
המשך קריאה "Symfony להתחלה מהירה DI (הזרקת תלות) מדריך" »













פנורמה Theme על ידי Themocracy

6 מבקרים מקוון עכשיו
2 אורחים, 4 בוטים, 0 חברים
מקס מבקרים היום: 17 בשעה 06:54 UTC
החודש: 17 18-08-2011 בשעה 06:54 UTC
השנה: 130 28-03-2011 בשעה 22:40 UTC
כל הזמן: 130 28-03-2011 בשעה 10:40 UTC