Magento 2 memiliki konsep Plugins / Interception / Interceptors yang bertentangan dengan Magento 1.
Ini bertindak seperti sebelum | setelah acara untuk setiap metode publik. Itu bagus.
Anda juga dapat menggunakan around
plugin untuk mengganti fungsionalitas metode.
Tapi Magento 2 masih menawarkan kemungkinan menulis ulang kelas kurang lebih dengan cara M1.
Saya ingin melihat beberapa contoh di mana kelas menulis ulang adalah cara untuk pergi daripada menggunakan plugin.
Saya tahu ini berguna ketika Anda ingin mengubah perilaku metode yang dilindungi inti, tetapi apakah ada kasus lain di mana penulisan ulang direkomendasikan atau diperlukan?
17
Jawaban:
Alasan yang jelas untuk menggunakan penulisan ulang alih-alih plugin adalah ketika Anda perlu mengganti metode pribadi, dilindungi atau final .
Tetapi pertimbangkan juga skenario berikut ini.
Skenario 1 (urutan sortir absolut):
Penulisan ulang dapat bermanfaat ketika Anda membutuhkan kode Anda untuk dijalankan sebelum plugin . Saya tahu Anda bisa melakukannya dengan mengatur plugin
sortOrder
, tetapi Anda tidak bisa memastikan kode Anda akan selalu menjadi yang pertama ketika seseorang (bukan Anda) akan menginstal komponen pihak ke-3.Skenario 2 (tidak termasuk kode):
Jika Anda perlu mengecualikan atau menulis ulang hanya sepotong kode dalam suatu metode, sebuah plugin bisa menjadi cara yang kurang optimal. Saya tahu Anda bisa menggunakan
around
plugin dan menghindari memanggilproceed
, tetapi ini bisa merusak plugin lain di stack.Skenario 3 (gaya kode):
Anda harus menggunakan penulisan ulang ketika Anda perlu menulis ulang suatu perilaku, plugin harus digunakan untuk memodifikasi output atau menjalankan kode sebelum / sesudah.
Sebuah plugin, harus selalu menjalankan kode asli untuk menghindari kerusakan modul lain.
Kesimpulan saya:
Jika Anda dapat mempertimbangkan metode inti sebagai kotak hitam dengan input dan satu output dan Anda agnostik tentang mekanisme internalnya, maka sebuah plugin bisa menjadi pilihan terbaik.
Jika Anda perlu mengubah perilaku internal , menulis ulang bisa menjadi pilihan terbaik.
sumber
Pertanyaan yang bagus, saya bertanya pada diri sendiri hal yang sama beberapa hari yang lalu dan inilah yang saya pikirkan:
Sumber: Kursus Dasar Magento U
sumber