मैं विभिन्न प्रकार के पृष्ठों को प्रस्तुत करने के लिए सरल सेवा बनाने की कोशिश कर रहा हूं।Symfony2 में रणनीति पैटर्न
$somePageType = new PageType(...);
$this->get('page.service')->render($somePagetype);
... जो Strategy pattern के रूप में तैयार किया जाएगा: मूल अवधारणा की तरह कुछ हो रही है। पेज प्रकार render
विधि के साथ इंटरफ़ेस को लागू करेंगे और page.service
इसे कॉल करेंगे। समस्या यह है कि मैं पेज प्रकार कक्षाओं में सिद्धांत का उपयोग करना चाहता हूं। मेरे लिए यहां क्या विकल्प हैं? मैं इन वर्गों में से प्रत्येक के लिए सेवा बनाने से बचना चाहता हूं। क्या यह भी संभव है? क्या उन्हें बिना किसी सेवा के कंटेनर को जागरूक करना संभव है? संभवतः, भविष्य में, कुछ पेज प्रकार को केवल सिद्धांत से कुछ और चाहिए, इसलिए मुझे यह भी ध्यान में रखना होगा।
कंटेनर को पास करने के लिए कोई अच्छा नहीं है। यदि उसके ऑब्जेक्ट को सिद्धांत की आवश्यकता है, तो उसे डॉक्टर ऑब्जेक्ट के लिए कन्स्ट्रक्टर में पैरामीटर जोड़कर इसकी आवश्यकता होनी चाहिए। – meze
बेशक @meze, लेकिन क्या होगा यदि प्रत्येक रणनीति में विभिन्न निर्भरताएं हों। यह एकमात्र रास्ता होगा। हालांकि, मैं व्यक्तिगत रूप से सभी रणनीतियों को सेवाओं के रूप में परिभाषित करता हूं। – gilden
और आप अपनी रणनीतियों का परीक्षण कैसे करेंगे? सिम्फनी के बिना किसी अन्य परियोजना में पुन: उपयोग करें? – meze