इसलिए Magento प्रेक्षक घोषित करने के 2 तरीके प्रदान करता है। <type>
Magento 1.x में टैग को निर्दिष्ट करके और shared
Magento 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
विशेषता का उपयोग करने के लिए आवश्यक नहीं है , ताकि मैं आमतौर पर अब इसे छोड़ दूं।