मैं निर्भरता इंजेक्शन, नियंत्रण में उलझन, और आईओसी कंटेनर पर बहुत कुछ पढ़ रहा हूं। मैं मुख्य रूप से गतिशील भाषाओं में प्रोग्राम (काम पर PHP, घर पर पायथन) भी प्रोग्राम करता हूं। यहाँ सब मैं कर रहा हूँ खोजने कर रहे हैं, लेकिन जैसा कि मैंने यह सब एक साथ टुकड़ा मुझे भरने के लिए इस अंतराल का एक बहुत छोड़ देता है:आईओसी कंटेनर और गतिशील भाषाएं (2 ले लो)
- Why are IOC containers unnecessary with dynamic languages?
- Why do I need an IoC container as opposed to straightforward DI code?
- Advantages an IoC container provides beyond simple DI (ब्लॉग पोस्ट)
तो मैं जो पढ़ रहा हूं वह है: आईओसी कंटेनर स्थिर भाषाओं में एक बड़ा सौदा है, क्योंकि गतिशील भाषाओं में DI को निष्पादित करना इतना आसान है। लेकिन वे डी के बाहर भी लाभ प्रदान करते हैं, जैसे आपके लिए निर्भरता प्रबंधन और हाथ से एक दर्जन वस्तुओं को एक साथ स्ट्रिंग करने से बचाने के लिए। और, आकस्मिक रूप से, वे जटिल हैं, इसलिए उन्हें स्वयं करने की कोशिश न करें (लेकिन PHP के लिए कोई भी अच्छा अस्तित्व नहीं है)।
मुझे लगता है कि यह जानकारी मुझे तरह से छोड़ देती है ... अटक गया। इसके साथ मैं क्या करूं? मैं बहुत ही जटिल निर्भरताओं के साथ एक बहुत बड़े कोडबेस में काम करता हूं (और शायद रिफैक्टरिंग के लिए एक मजबूत आवश्यकता है, लेकिन यह एक और समानांतर मुद्दा है)। हमने अब तक डीआई को लागू करने में बहुत खराब प्रदर्शन किया है, और मैं वास्तव में हमें सही दिशा में बदलने की कोशिश कर रहा हूं। गतिशील भाषाओं और आईओसी (या कम से कम आईओसी कंटेनर) के संबंध में वहां कुछ भी नहीं लगता है।
क्या मैं समय के लिए "हैंड-स्ट्रिंग" निर्भरताओं को एक साथ बेहतर करता हूं, और सिद्धांतों पर बेहतर संभाल पाने के बाद, बाद में एक कंटेनर में इसे स्वचालित करने की चिंता करता हूं? क्या यह मेरे अपने साधारण आईओसी कंटेनर को लागू करने लायक है? या क्या लाभ अंततः PHP में लागत के लायक नहीं है?
क्या आपने http://components.symfony-project.org/dependency-injection/ कंटेनर का प्रयास किया था? – Mchl
@mchl: वह वास्तव में बहुत अच्छा दिखता है। धन्यवाद! (उल्लेख नहीं है, यह दस्तावेज एक आईओसी कंटेनर के बेहतर विवरणों में से एक है जिसे मैंने अभी तक देखा है ... जब मैं इन सभी चीजों को समझ रहा था तो उपयोगी होता) – keithjgrant
@mchl: आपका लिंक सबसे उपयोगी बात है I अभी तक देखा है। इसे एक उत्तर में ले जाएं, और यदि कोई बेहतर सतह नहीं है तो बक्षीस तुम्हारा है। – keithjgrant