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 shared
Magento 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 singleton
veya eksikse kullanarak başlatılır Mage::getSingleton()
.
Magento 2 olması durumunda, eğer shared
bir false
o kullanılarak örneği sınıfı $this->_observerFactory->create()
(yeni bir örneği).
eğer shared
doğ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ü type
etiketi 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)
type
etiket 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.