Apakah intersepsi di magento2 menggantikan pengamat di magento1?

9

Apakah intersepsi dimaksudkan sebagai metode yang disukai ketika berhadapan dengan perubahan perilaku dari metode asli di Magento2 karena pengamat ada di magento1?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception
Matoeil
sumber

Jawaban:

16

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 aroundpencegat) 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, afteratau aroundpencegat 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.

Marius
sumber
2
Setuju. Intersepsi adalah mekanisme tingkat yang lebih rendah. Tetapi itu tidak menggantikan acara. Acara menyediakan antarmuka penyedia layanan tingkat yang lebih tinggi
Anton Kril
6

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.

Anton Kril
sumber
Bisakah Anda mendapatkan fakta penting ini di devdocs sebagai sumber kebingungan, terutama karena Anda masih memiliki banyak acara di M2. Jika kita tahu peristiwa mati kita dapat kode sesuai, saya belum melihat di mana pun yang menyebutkan ini dalam dokumen. Dalam bahasa lain ada alasan untuk menggunakan acara terkadang dan pencegat kali lain, saya pikir Anda perlu menjelaskan bahwa Magento 2 berbeda.
Karen Baker
5

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.xmlfile yang menyertakan definisi.

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>
David Manners
sumber
Dalam Magento-2 versi terbaru pola pengamat telah diubah. Sekarang Anda tidak perlu mendeklarasikan atribut metode dalam events.xml ,, Ini akan secara otomatis menjalankan metode eksekusi ,, sama seperti controller.
Keyur Shah