इसलिए Magento प्रेक्षक घोषित करने के 2 तरीके प्रदान करता है। <type>Magento 1.x में टैग को निर्दिष्ट करके और sharedMagento 2 में विशेषता को निर्दिष्ट करके सिंगलटन और मॉडल (नया उदाहरण) ।
Magento यह करने का 1 तरीका है।
<events>
<event_name>
<observers>
<unique_observer_name>
<type>model|object|singleton|null</type>
<class>class/alias_here</class>
<method>methdNameHere</method>
</unique_observer_name>
</observers>
</event_name>
</events>
Magento 2 संस्करण:
<event name="event_name">
<observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" />
</event>
तो मैगेंटो 1 के मामले में, यदि <type>टैग मॉडल या ऑब्जेक्ट है, तो क्लास के साथ तत्काल किया जाएगा Mage::getModel()। यदि यह है singletonया यह याद आ रही है तो इसका उपयोग कर त्वरित है Mage::getSingleton()।
Magento 2 के मामले में, अगर sharedहै falseतो वर्ग का उपयोग कर instantiated है $this->_observerFactory->create() (नया उदाहरण)।
अगर sharedयह सच है तो यह $this->_observerFactory->get()(सिंगलटन) का उपयोग कर त्वरित है।
दो संस्करणों के बीच घटना पर्यवेक्षक विचार बहुत समान है, लेकिन मैगेंटो 1 में अधिकांश पर्यवेक्षकों को सिंगलटन के रूप में उपयोग किया जाता है, क्योंकि typeटैग गायब है और मैगेंटो 2 में (मुझे लगता है) सभी पर्यवेक्षकों के पास है shared="false"।
मैं चकरा गया हूं। मुझे सिंगलेट्स का उपयोग कब करना चाहिए और मुझे पर्यवेक्षकों के लिए नए उदाहरणों का उपयोग कब करना चाहिए?
Magento संस्करण (1 या 2) यहाँ महत्वपूर्ण नहीं है।
प्रत्येक दृष्टिकोण के लिए एक सरल उपयोग मामला (नया उदाहरण या सिंगलटन) होगा
typeटैग वैसा नहीं है जैसा कि है <type>singleton</type>। तो क्या कारण है कि हम पर्यवेक्षकों को एकल बना रहे हैं?
typeविशेषता का उपयोग करने के लिए आवश्यक नहीं है , ताकि मैं आमतौर पर अब इसे छोड़ दूं।