Di Magento 2, apa pro dan kontra menggunakan plugin vs pengamat untuk mencapai sesuatu?
Saya mengerti bahwa pengamat berlangganan acara sedangkan plugin dapat melompat sebelum dan / atau setelah metode publik dipanggil pada kelas Magento, tapi pasti mereka sudah dekat dengan persimpangan sekarang?
magento2
event-observer
plugin
Robbie Averill
sumber
sumber
Jawaban:
Plugin ada di mana-mana karena dimungkinkan untuk mengubah / mengganti perilaku metode publik apa pun dalam sistem. Kustomisasi harus dilakukan menggunakan plugin untuk metode / kelas publik yang ditandai dengan
@api
anotasi (stable public API) bila memungkinkan. Pendekatan semacam itu menjamin bahwa kustomisasi akan tetap berfungsi setelah rilis Magento baru. Selainbefore
/after
plugin yang disebutkan dalam pertanyaan, dimungkinkan untuk membuataround
plugin untuk menggantikan perilaku asli.Di sisi lain, pengamat adalah mekanisme perpanjangan warisan yang diwarisi dari Magento 1, sangat terbatas dan harus dihindari jika memungkinkan. Namun, tidak seperti plugin, mereka dapat memberikan titik ekstensi di dalam metode yang dilindungi / pribadi.
sumber
Menurut panduan teknis Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): Semua nilai (termasuk objek) diteruskan ke acara yang TIDAK HARUS dimodifikasi dalam pengamat acara. Sebagai gantinya, plugins HARUS digunakan untuk memodifikasi input atau output dari suatu fungsi.
Bagi saya perbedaan utama antara plugin dan pengamat adalah:
sumber
checkout_submit_all_after
acara. Pengamat Anda akan dipicu setelah pesanan berhasil dilakukan.