जवाबों:
मुझे नहीं लगता कि घटना पर्यवेक्षकों को बदलने के लिए अवरोधन का इरादा है।
Magento2 कोड में अभी भी ईवेंट भेजे गए हैं।
इंटरसेप्टर एक विधि के इनपुट या आउटपुट को संसाधित करने का एक तरीका है।
या एक विधि का व्यवहार ( around
इंटरसेप्टर का उपयोग करके ) लेकिन जो मैं समझता हूं कि यह एक जोखिम भरा दृष्टिकोण है।
मुझे लगता है कि यह जितना संभव हो उतना वर्ग पुनर्लेखन से बचने का एक तरीका है।
Magento 1.x में, यदि आपको उस विधि के परिणाम को संशोधित करने की आवश्यकता है जिसमें आपको उस वर्ग को ओवरराइड करने की आवश्यकता है जिसमें विधि और स्वयं विधि है।
अब आप केवल डेटा का हेरफेर करने के लिए उपयोग कर सकते हैं before
, after
या around
इंटरसेप्टर कर सकते हैं ।
पर्यवेक्षकों के साथ आप किसी विधि के कुछ निश्चित बिंदुओं में डेटा में हेरफेर कर सकते हैं, न कि पूर्ण विधि से।
मेरी राय में, जब संभव हो तो पर्यवेक्षकों का उपयोग करना अभी भी Magento 2 में भी अनुकूलित करने के लिए सबसे अच्छा तरीका है।
अवरोधन घटनाओं का विकास है। इसका लक्ष्य एक डेवलपर को विस्तार बिंदुओं पर विचार किए बिना अपने कोड को लिखने की अनुमति देना है।
घटनाओं के साथ आपको उन स्थानों के बारे में सोचना होगा जहां आप Mage :: dispatchEvent () करते हैं ताकि आपका मॉड्यूल अनुकूलन योग्य हो।
अवरोधन आपको इस बारे में सोचने की अनुमति नहीं देता है। आप बस अपना व्यावसायिक तर्क लिखें। हर विधि कॉल एक घटना है। इसलिए यदि आप अपना कोड उचित ऑब्जेक्ट-ओरिएंटेड तरीके से लिखते हैं, तो यह डिज़ाइन द्वारा पूरी तरह से अनुकूलन योग्य होगा।
लेकिन ईवेंट उच्च स्तरीय सेवा प्रदान करते हैं इंटरफ़ेस प्रदान करते हैं जो व्यावसायिक भाषा में बात करता है। तो घटनाएँ Magento 2 में रहेंगी।
वर्तमान में अभी भी विशिष्ट घटनाओं को सुनने का विकल्प है और मैं सुझाव दूंगा कि इंटरसेप्टर पुनर्लेखन के लिए सिर्फ एक प्रतिस्थापन है। मैं तब भी घटनाओं का उपयोग करूंगा जब आपकी आवश्यकताओं के लिए एक जगह हो।
यदि आप वर्तमान रिलीज़ को देखते हैं तो कुछ मॉड्यूल में ऐसी events.xml
फाइलें होती हैं जिनमें परिभाषाएँ शामिल होती हैं।
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>