Bu yüzden Magento bir gözlemci ilan etmenin 2 yolunu sunar. Singleton ve Model (yeni örnek) <type>Magento 1.x'deki etiketi belirterek ve sharedMagento 2'deki niteliği belirterek .
Magento yapmanın 1 yolu.
<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 versiyonu:
<event name="event_name">
<observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" />
</event>
Bu nedenle, Magento 1 örneğinde, <type>etiket model veya nesne ise, sınıf ile örneklendirilir Mage::getModel(). Eksikse singletonveya eksikse kullanarak başlatılır Mage::getSingleton().
Magento 2 olması durumunda, eğer sharedbir falseo kullanılarak örneği sınıfı $this->_observerFactory->create() (yeni bir örneği).
eğer shareddoğruysa o kullanarak örneği $this->_observerFactory->get()(singleton).
İki versiyon arasında olay gözlemcisi fikri çok benzerdir, ancak Magento 1'deki gözlemcilerin çoğu tekton olarak kullanılır, çünkü typeetiketi eksiktir ve gözlemcilerin çoğunun Magento 2'sinde (sanırım hepsi) shared="false".
Şaşırdım. Singletons'u ne zaman kullanmalıyım ve ne zaman gözlemciler için yeni örnekler kullanmalıyım?
Magento versiyonu (1 veya 2) burada önemli değil.
Basit bir kullanım durumu her yaklaşım için geçerlidir (yeni örnek veya singleton)
typeetiket aynı şey değildir <type>singleton</type>. Öyleyse gözlemcileri singleton haline getirmemizin nedeni nedir?
typeÖzelliği hiç kullanmak gerekmese de , genellikle şimdi atlamak için.