Jadi Magento menawarkan 2 cara untuk menyatakan pengamat. Singleton dan Model (contoh baru) dengan menentukan <type>
tag di Magento 1.x dan dengan menentukan shared
atribut di Magento 2.
Cara Magento 1 melakukannya.
<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>
Versi Magento 2:
<event name="event_name">
<observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" />
</event>
Jadi dalam kasus Magento 1, jika <type>
tag adalah model atau objek, kelas akan dipakai dengan Mage::getModel()
. Jika ada singleton
atau tidak ada, itu dipakai menggunakan Mage::getSingleton()
.
Dalam kasus Magento 2, jika shared
ini false
maka kelas instantiated menggunakan $this->_observerFactory->create()
(misalnya baru).
jika shared
benar itu dipakai menggunakan $this->_observerFactory->get()
(tunggal).
Di antara dua versi, gagasan pengamat acara sangat mirip, tetapi sebagian besar pengamat di Magento 1 digunakan sebagai lajang, karena type
tag tersebut hilang dan di Magento 2 sebagian besar (saya pikir semua) dari pengamat memilikinya shared="false"
.
Saya bingung. Kapan saya harus menggunakan lajang dan kapan saya harus menggunakan contoh baru untuk pengamat?
Versi Magento (1 atau 2) tidak penting di sini.
Kasus penggunaan sederhana akan dilakukan untuk setiap pendekatan (contoh baru atau tunggal)
type
tag yang sama dengan <type>singleton</type>
. Jadi apa alasan kita membuat pengamat lajang?
type
atribut sama sekali, sehingga saya biasanya melewatkannya sekarang.