Anda tidak akan menemukan jawaban yang baik, jelas, dan deterministik di sini. Pada umumnya, Anda harus mengirimkan acara dalam modul tempat Anda dan pengguna Anda membutuhkannya - jika Anda tidak dapat memikirkan di mana pun mereka mungkin dibutuhkan, Anda tidak perlu mengirimkannya. Magento sendiri memancarkan begitu banyak peristiwa di begitu banyak tempat yang berbeda (pengiriman pre / post controller, operasi crud, dll) sehingga modul Anda sudah akan mengirimkan sejumlah peristiwa berguna tanpa Anda melakukan apa pun.
Karena itu tidak memuaskan, Anda ingin modul Anda mengirimkan acara ketika ada beberapa tindakan yang dilakukan modul Anda sehingga pengguna Anda mungkin ingin menambahkan item, menghapus item dari, mengubah, atau mengambil tindakan terpisah terlepas dari tindakan asli. Misalnya - Magento memiliki visitor_init
acara yang bukan bagian dari rangkaian standar acara yang dibuat secara otomatis. Acara ini memungkinkan programmer untuk memodifikasi objek pengunjung sebelum data log Magento. Ini tidak mungkin pengembang modul asli untuk mengetahui secara deterministikini adalah tempat acara perlu ditambahkan - kemungkinan berasal dari permintaan fitur dan / atau wawancara dengan pengguna sistem. Ketahui apa yang diinginkan pengguna Anda, dan jika tidak mungkin / praktis untuk membangun UI / UX agar mereka melakukannya melalui admin, tambahkan pengait acara sehingga programmer lain dapat melakukannya untuk mereka.
Kurang seksi, menambahkan acara juga bisa menjadi cara murah untuk memungkinkan pengembang (baik pengguna Anda, atau bahkan tim Anda ) untuk menambahkan beberapa fungsionalitas ke dalam sedikit kode yang sulit disentuh semua orang. Taruh dispatchEvent
panggilan Anda di tengah kode, kaitkan ke dalamnya, dan Anda dapat menambahkan fungsionalitas Anda tanpa mengganggu kode di ruang lingkup aslinya. [Editor: Anda juga harus memperbaiki kode mengerikan itu di beberapa titik]
Dari segi kinerja, menambahkan acara untuk dikirim akan bergantung pada tempat Anda menambahkannya. Saat Anda memanggil dispatch
acara, Magento perlu membuat beberapa panggilan PHP tambahan, menanyakan konfigurasi untuk setiap pengamat yang dikonfigurasi, dan kemudian memanggil pengamat. Dilakukan sekali, ini adalah tambahan murah dalam lingkup pengiriman Magento standar. Namun, dilakukan berulang kali, (katakanlah, sebelum setiap blok render) ini dapat bertambah. Tidak ada aturan praktis yang baik di sini - karena selalu jawaban yang tepat adalah profil.
Akhirnya, dengan Magento 2, masih terlalu dini untuk mengatakan. Semua hal di atas masih berlaku - namun sistem plugin menambahkan beberapa kerutan. Plugin, dari satu sudut pandang, merupakan cara untuk membuat perilaku seperti acara untuk panggilan metode publik apa pun di Magento. Secara teori, jika Anda merancang kelas dengan benar, Anda seharusnya tidak perlu acara. Namun, dalam praktiknya, memasukkan acara ke sedikit kode metode yang dilindungi atau pribadi akan menjadi solusi yang menggoda bagi pengembang Magento ketika alternatifnya adalah proses refactoring yang panjang. Selain itu, membuat acara yang diberi nama khusus sering kali dapat menciptakan pengalaman yang lebih ramah bagi para pengembang menggunakan modul Anda.
Semoga itu bisa membantu!