Magento 2: Mengecualikan kelas dari menghasilkan pencegat

9

Di Magento 2 (beta9 dan di atasnya) Anda dapat menjalankan perintah ini php bin/magento setup:di:compiledan semua pencegat, pabrik, dan proxy (dan mungkin yang lain) akan dihasilkan di var/generationfolder untuk semua kelas yang Anda miliki dalam instance magento Anda.
Ini berguna untuk lingkungan hidup karena jika tidak, kelas yang disebutkan di atas akan dihasilkan pada saat runtime ketika mereka diperlukan dan dapat mempengaruhi kinerja.
Apakah ada cara untuk mengecualikan beberapa kelas dari skrip ini sehingga pencegat tidak akan dibuat saat menjalankan perintah?
Sebagai contoh: Saya ingin agar controller Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticstidak memiliki interceptor yang dihasilkan.

Marius
sumber
Mengapa Anda membutuhkan ini?
Anton Kril
@AntonKril. Berhentilah bertanya dan beri saya solusi: D. Sekarang serius, saya mencoba untuk menghapus beberapa modul dan ketika melakukannya, setup:di:compilegagal karena beberapa kelas induk hilang. Kelas-kelas yang memperpanjang kelas-kelas yang hilang masih ada tetapi mereka tidak digunakan oleh aplikasi. Dan saya tidak bisa menghapusnya karena mereka ada dalam modul yang saya butuhkan. Lihat penjelasan lengkap di bawah ini: magento.stackexchange.com/questions/69040/…
Marius

Jawaban:

7

untuk menjalankan dari cli setidaknya di versi sebelumnya ada exclude-patternparameter. Itu ditambahkan untuk menghindari masalah ketika suatu kelas tidak dapat diproses dengan benar, seperti itu terjadi misalnya dengan kelas magento1. Perintah dan argumen mungkin telah berubah dengan mengubahnya menjadi perintah konsol.

Tapi saya tidak yakin apa tujuan Anda, jadi saya tidak bisa mengatakan apakah ini solusi yang baik untuk digunakan.

Flyingmana
sumber
Inilah yang saya coba lakukan. Saya mengeluarkan beberapa modul untuk melihat sejauh mana saya bisa melangkah. Di antara modul-modul ini adalah Reportmodul. Tetapi karena hubungan yang erat antara modul Laporan dan Backend masih ada kelas dalam modul backend yang bergantung pada kelas modul laporan. Saya menemukan cara untuk tidak menggunakannya, tetapi karena perintah di mem-parsing file itu melewati kelas "diabaikan" dan mencoba untuk membangun pencegat. Tetapi ini gagal karena kelas induk Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsmisalnya, tidak ada. Jadi saya perlu cara untuk mengecualikan ini.
Marius
itu jahitan bahwa dalam pendekatan perintah konsol tidak ada exclude-patternparam. Atau setidaknya saya tidak menemukannya. Saya mencari DiCompileCommand::configure.
Marius
Saya mengerti, Anda bisa menambahkan Masalah yang menanyakan fungsi ini merujuk pada PR ini: github.com/magento/magento2/pull/986 atau Anda menggunakan perubahan yang ada di sana untuk menguji bagaimana menambahkannya sementara untuk bangunan lokal Anda.
Flyingmana