Jawaban:
Saya tidak berpikir intersepsi dimaksudkan untuk menggantikan pengamat acara.
Masih ada acara yang dikirim dalam kode Magento2.
Pencegat hanyalah cara untuk memproses input atau output dari suatu metode.
Atau perilaku metode (menggunakan around
pencegat) tetapi dari apa yang saya pahami ini adalah pendekatan yang berisiko.
Saya pikir itu lebih dari cara untuk menghindari penulisan ulang kelas sebanyak mungkin.
Di Magento 1.x, jika Anda perlu memodifikasi hasil metode yang Anda butuhkan untuk mengganti kelas yang berisi dan metode itu sendiri.
sekarang Anda cukup menggunakan before
, after
atau around
pencegat untuk memanipulasi data.
Dengan pengamat Anda dapat memanipulasi data di titik tertentu tertentu dari suatu metode, bukan metode lengkap itu sendiri.
Menurut pendapat saya, menggunakan pengamat bila memungkinkan masih merupakan pendekatan terbaik untuk menyesuaikan bahkan di Magento 2.
Intersepsi adalah evolusi peristiwa. Tujuannya adalah memungkinkan pengembang untuk menulis kodenya tanpa memikirkan poin ekstensi.
Dengan acara, Anda harus memikirkan tempat di mana Anda melakukan Mage :: dispatchEvent () sehingga modul Anda dapat disesuaikan.
Intersepsi memungkinkan Anda untuk tidak memikirkan hal ini. Anda hanya menulis logika bisnis Anda. Setiap panggilan metode adalah suatu peristiwa. Jadi jika Anda menulis kode Anda dengan cara yang berorientasi objek yang tepat, itu akan sepenuhnya disesuaikan dengan desain.
Tetapi acara menyediakan Antarmuka Menyediakan Layanan tingkat tinggi yang berbicara bahasa bisnis. Jadi acara akan tetap di Magento 2.
Saat ini masih ada opsi untuk mendengarkan acara tertentu dan saya akan menyarankan bahwa pencegat hanyalah pengganti untuk penulisan ulang. Saya masih akan menggunakan acara ketika ada satu di tempat untuk kebutuhan Anda.
Jika Anda melihat rilis saat ini beberapa modul memiliki events.xml
file yang menyertakan definisi.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>