Magento 2:インターセプターの生成からクラスを除外する


9

Magento 2(beta9以降)では、このコマンドphp bin/magento setup:di:compileを実行すると、すべてのインターセプター、ファクトリー、およびプロキシー(そして場合によってはその他)がvar/generation、magentoインスタンスにあるすべてのクラスのフォルダーに生成されます。
それ以外の場合、上記のクラスは必要なときに実行時に生成され、パフォーマンスに影響を与える可能性があるため、これはライブ環境に役立ちます。
コマンドを実行するときにインターセプターが作成されないように、このスクリプトからいくつかのクラスを除外する方法はありますか?
例として:Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsインターセプターが生成されないようにしたいです。


なぜこれが必要なのですか?
Anton Kril、2015年

@AntonKril。質問するのをやめて、解決策を教えてください:D。今真剣に、私はいくつかのモジュールを削除しようとしています、そしてそれをするときsetup:di:compile、いくつかの親クラスが欠落しているので失敗します。これらの欠落したクラスを拡張するクラスはまだ存在しますが、アプリケーションでは使用されません。また、必要なモジュール内にあるため、削除できません。以下の完全な説明を参照してください:magento.stackexchange.com/questions/69040/...を
マリウス

回答:


7

少なくとも以前のバージョンではcliから実行するためのexclude-patternパラメーターがあります。これは、たとえばmagento1クラスで発生するような、クラスを正しく処理できない場合の問題を回避するために追加されました。コマンドと引数は、コンソールコマンドに変換することで変更された可能性があります。

しかし、私はあなたの目標が何であるかはわからないので、これが使用に適した解決策であるかどうかはわかりません。


これが私がやろうとしていることです。私はいくつかのモジュールを削除して、どこまで行けるか確認しています。これらのモジュールの中には、モジュールがありReportます。ただし、レポートとバックエンドモジュールが密に結合しているため、バックエンドモジュールには、レポートモジュールクラスに依存するクラスが残っています。それらを使用しない方法を見つけましたが、diコマンドはファイルを解析するため、「無視された」クラスを通過し、インターセプターを作成しようとします。しかしMagento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics、たとえばの親クラスが存在しないため、これは失敗します。これを除外する方法が必要です。
マリウス

これは、コンソールコマンドアプローチにexclude-patternパラメータがないことを示しています。または、少なくとも私はそれを見つけられませんでした。中を見ましたDiCompileCommand::configure
マリウス

このPRを参照して、この機能を要求する課題を追加できます:github.com/magento/magento2/pull/986 または、変更セットを使用して、ローカルビルドに一時的に追加する方法をテストします。
Flyingmana 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.