त्वरित आरंभ Symfony डि (निर्भरता इंजेक्शन) ट्यूटोरियल
क्या क्या है निर्भरता इंजेक्शन (डि) ?
निर्भरता इंजेक्शन एक तकनीक है कि एक सॉफ्टवेयर अनुप्रयोग के भीतर शिथिल युग्मित वस्तुओं के लिए अनुमति देता है है. आम तौर पर अगर किसी ऑब्जेक्ट के लिए यह आंतरिक कसकर युग्मित सिस्टम के लिए अग्रणी instantiated होगा दूसरे की कार्यक्षमता के लिए उपयोग की आवश्यकता है. निर्भरता इंजेक्शन को लागू करने से हम उपयोग के लिए आवश्यक तैयार वस्तुओं (- आईओसी कभी कभी भी नियंत्रण उलटा कहा जाता है) इंजेक्षन. निम्न उदाहरण लें:
<Php? वर्ग DecisionMaker { सार्वजनिक समारोह makeDecision ($ सरणी पैरामीटर) { / / डेटाबेस एडाप्टर की आवश्यकता डी पी = नए (DecisionParameters) $; $ ParameterScore = $ DP-> getScore ($ पैरामीटर); / * ... कुछ अधिक निर्णय तर्क ... * / वापसी ($ parameterScore> 50); } }
कोड के इस टुकड़े को कसकर DecisionParameters वस्तु के लिए युग्मित किया जा कहा है. एक शिथिल युग्मित फैशन में ऊपर पुनर्लेखन हम कुछ की तरह होता ....
<Php? वर्ग DecisionMaker { निजी $ _dp; सार्वजनिक समारोह __construct ($ डी पी) { $ इस -> _dp = डी पी $; } सार्वजनिक समारोह makeDecision ($ सरणी पैरामीटर) { $ ParameterScore = $ इस -> _dp> getScore ($ पैरामीटर); / * ... कुछ अधिक निर्णय तर्क ... * / वापसी ($ parameterScore> 50); } }
Whilst हम ऐसी है कि हर बार एक वस्तु instantiated है हम भी अपनी निर्भरता इन्स्तांत और में ये भी पारित किया है जटिलता जोड़ रहे हैं शिथिल युग्मित कोड का लाभ पाने. उदाहरण के लिए, इस:
$ पसंद = नए DecisionMaker (); गूंज $ पसंद -> makeDecision (सरणी ('प्रयास' => 'कम', 'वापसी' => 'उच्च'));
अब बन जाता है:
डी पी = नए (DecisionParameters) $; $ पसंद = नए DecisionMaker ($ डी पी); गूंज $ पसंद -> makeDecision (सरणी ('प्रयास' => 'कम', 'वापसी' => 'उच्च'));
इस स्थिति में एक वर्ग के लिए निर्भरता की संख्या बढ़ जाती है के रूप में और अधिक दर्दनाक हो जाता है, और क्या अगर निर्भरता खुद निर्भरता है? यह बहुत जल्दी से एक वस्तु प्रशासन दुःस्वप्न बन सकता है! निर्भरता इंजेक्शन कंटेनर (या चौखटे) दर्ज करें ...
पढ़ने 'क्विक स्टा Symfony डि (निर्भरता इंजेक्शन) ट्यूटोरियल' जारी रखें »
















































