Posts tagged: Symfony

เริ่ม Symfony ด่วนสอน DI (พึ่งพาการฉีด)

โดย , เสาร์ 14 สิงหาคม 2010 14:21

อะไรคือสิ่งที่ พึ่งพาการฉีด (DI)?

ฉีดอยู่เป็นเทคนิคที่ช่วยให้สำหรับวัตถุคู่อย่างอิสระภายในโปรแกรมซอฟแวร์ โดยทั่วไปถ้าวัตถุต้องเข้าถึงฟังก์ชันการทำงานของผู้อื่นก็จะสามารถ instantiated ภายในที่นำไปสู่​​ระบบคู่แน่น โดยการฉีดอยู่ที่การดำเนินการที่เราฉีดวัตถุที่จำเป็นพร้อมใช้งาน (บางครั้งยังเรียกผกผันของการควบคุม - IOC) นำตัวอย่างต่อไปนี้:

  <? PHP
 DecisionMaker คลาส {
     makeDecision ฟังก์ชันสาธารณะ ($ array พารามิเตอร์) {
         / / ต้องการอะแดปเตอร์ฐานข้อมูล
         $ DP = new DecisionParameters ();
         $ = $ parameterScore DP-> getScore (พารามิเตอร์ $);
         / * ...  ตรรกะการตัดสินใจบางคนอื่น ๆ ...  * /
         ผลตอบแทน ($ parameterScore> 50);
     }
 } 

ชิ้นส่วนของรหัสนี้จะกล่าวจะคู่แน่นกับวัตถุที่ DecisionParameters เขียนใหม่ดังกล่าวข้างต้นในแฟชั่นคู่อย่างอิสระที่เราต้องการมีบางอย่างเช่น ....

  <? PHP
 DecisionMaker คลาส {
     ส่วนตัว $ _dp;
     ฟังก์ชั่น __ สาธารณะโครงสร้าง ($ DP) {
         $ this-> _dp = $ DP;
     }
     makeDecision ฟังก์ชันสาธารณะ ($ array พารามิเตอร์) {
         $ parameterScore = $ this-> _dp-> getScore (พารามิเตอร์ $);
         / * ...  ตรรกะการตัดสินใจบางคนอื่น ๆ ...  * /
         ผลตอบแทน ($ parameterScore> 50);
     }
 } 

ขณะที่การดึงดูดประโยชน์ของรหัสคู่อย่างอิสระเราจะเพิ่มความซับซ้อนดังกล่าวว่าแต่ละครั้งที่วัตถุเป็น instantiated เรายังมีการยกตัวอย่างการอ้างอิงและผ่านการเหล่านี้ในมากเกินไป ตัวอย่างเช่นนี้:

  ทางเลือกที่ $ = DecisionMaker ใหม่ ();
 echo $ choice-> makeDecision (array ('พยายาม' => 'ต่ำ', 'กลับ' => 'สูง')); 

ตอนนี้กลายเป็น:

  $ DP = new DecisionParameters ();
 ทางเลือกที่ $ = new DecisionMaker ($ DP);
 echo $ choice-> makeDecision (array ('พยายาม' => 'ต่ำ', 'กลับ' => 'สูง')); 

สถานการณ์เช่นนี้จะกลายเป็นความเจ็บปวดมากขึ้นเป็นตัวเลขของการอ้างอิงสำหรับการเรียนจะเพิ่มขึ้นและสิ่งที่ถ้าการอ้างอิงตัวเองมีการอ้างอิง? นี้ค่อนข้างได้อย่างรวดเร็วสามารถกลายเป็นฝันร้ายบริหารวัตถุ! ใส่ภาชนะที่ฉีดอยู่ (หรือกรอบ) ...
อ่านต่อ 'Start Symfony ด่วนสอน DI (พึ่งพาการฉีด)' »













ธีมพาโนรามาโดย Themocracy

7 ผู้เข้าชมออนไลน์ในขณะนี้
6 แขก, 1 บอท, 0 สมาชิก
ผู้เข้าชมสูงสุดวันนี้: 15 ที่ 12:54 น. UTC
เดือนนี้: 16 ที่ 2012/01/05 13:02 UTC
ในปีนี้: 69 ที่ 27-02-2012 09:56 น. UTC
เวลาทั้งหมด: 130 ที่ 28-03-2011 10:40 UTC