Magento2 में अवरोधन क्या magento1 में पर्यवेक्षकों को प्रतिस्थापित करता है?


9

क्या मैगेंटो 2 में मूल विधि के व्यवहार को बदलने के दौरान इंटरसेप्शन को पसंदीदा तरीका माना जा सकता है क्योंकि पर्यवेक्षक मैगेंटो 1 में थे?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception

जवाबों:


16

मुझे नहीं लगता कि घटना पर्यवेक्षकों को बदलने के लिए अवरोधन का इरादा है।
Magento2 कोड में अभी भी ईवेंट भेजे गए हैं।

इंटरसेप्टर एक विधि के इनपुट या आउटपुट को संसाधित करने का एक तरीका है।
या एक विधि का व्यवहार ( aroundइंटरसेप्टर का उपयोग करके ) लेकिन जो मैं समझता हूं कि यह एक जोखिम भरा दृष्टिकोण है।

मुझे लगता है कि यह जितना संभव हो उतना वर्ग पुनर्लेखन से बचने का एक तरीका है।
Magento 1.x में, यदि आपको उस विधि के परिणाम को संशोधित करने की आवश्यकता है जिसमें आपको उस वर्ग को ओवरराइड करने की आवश्यकता है जिसमें विधि और स्वयं विधि है।
अब आप केवल डेटा का हेरफेर करने के लिए उपयोग कर सकते हैं before, afterया aroundइंटरसेप्टर कर सकते हैं ।

पर्यवेक्षकों के साथ आप किसी विधि के कुछ निश्चित बिंदुओं में डेटा में हेरफेर कर सकते हैं, न कि पूर्ण विधि से।

मेरी राय में, जब संभव हो तो पर्यवेक्षकों का उपयोग करना अभी भी Magento 2 में भी अनुकूलित करने के लिए सबसे अच्छा तरीका है।


2
इस बात से सहमत। अवरोधन निचले स्तर का तंत्र है। लेकिन यह घटनाओं को प्रतिस्थापित नहीं करता है। इवेंट उच्च स्तरीय सेवा प्रदाता इंटरफ़ेस प्रदान करते हैं
एंटोन क्रिल

6

अवरोधन घटनाओं का विकास है। इसका लक्ष्य एक डेवलपर को विस्तार बिंदुओं पर विचार किए बिना अपने कोड को लिखने की अनुमति देना है।

घटनाओं के साथ आपको उन स्थानों के बारे में सोचना होगा जहां आप Mage :: dispatchEvent () करते हैं ताकि आपका मॉड्यूल अनुकूलन योग्य हो।

अवरोधन आपको इस बारे में सोचने की अनुमति नहीं देता है। आप बस अपना व्यावसायिक तर्क लिखें। हर विधि कॉल एक घटना है। इसलिए यदि आप अपना कोड उचित ऑब्जेक्ट-ओरिएंटेड तरीके से लिखते हैं, तो यह डिज़ाइन द्वारा पूरी तरह से अनुकूलन योग्य होगा।

लेकिन ईवेंट उच्च स्तरीय सेवा प्रदान करते हैं इंटरफ़ेस प्रदान करते हैं जो व्यावसायिक भाषा में बात करता है। तो घटनाएँ Magento 2 में रहेंगी।


क्या आप इस महत्वपूर्ण तथ्य को देवदास में भ्रम के स्रोत के रूप में प्राप्त कर सकते हैं, विशेष रूप से यह देखते हुए कि आपके पास अभी भी एम 2 में कई घटनाएं हैं। अगर हमें पता है कि घटनाएँ मृत हैं, तो हम तदनुसार कोड कर सकते हैं, मैंने कहीं भी ऐसा नहीं देखा है जो डॉक्स में इसका उल्लेख करता है। अन्य भाषाओं में कभी-कभी घटनाओं का उपयोग करने के कारण होते हैं और अन्य बार इंटरसेप्टर होते हैं, मुझे लगता है कि आपको यह स्पष्ट करने की आवश्यकता है कि मैगेंटो 2 अलग है।
करेन बेकर

5

वर्तमान में अभी भी विशिष्ट घटनाओं को सुनने का विकल्प है और मैं सुझाव दूंगा कि इंटरसेप्टर पुनर्लेखन के लिए सिर्फ एक प्रतिस्थापन है। मैं तब भी घटनाओं का उपयोग करूंगा जब आपकी आवश्यकताओं के लिए एक जगह हो।

यदि आप वर्तमान रिलीज़ को देखते हैं तो कुछ मॉड्यूल में ऐसी events.xmlफाइलें होती हैं जिनमें परिभाषाएँ शामिल होती हैं।

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>

Magento-2 में नवीनतम संस्करण ऑब्जर्वर पैटर्न को बदल दिया गया है। अब आपको इवेंट्स.xml में विधि विशेषता घोषित करने की आवश्यकता नहीं है, यह स्वचालित रूप से निष्पादन विधि चलाएगा ,, नियंत्रक की तरह।
कीयूर शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.