Magento 2: Klassen von der Generierung von Interceptors ausschließen

9

In Magento 2 (Beta9 und höher) können Sie diesen Befehl ausführen, php bin/magento setup:di:compileund alle Interceptors, Fabriken und Proxys (und möglicherweise andere) werden im var/generationOrdner für alle Klassen generiert, die Sie in Ihrer Magento-Instanz haben.
Dies ist nützlich für Live-Umgebungen, da andernfalls die oben genannten Klassen zur Laufzeit generiert werden, wenn sie benötigt werden und die Leistung beeinträchtigen können.
Gibt es eine Möglichkeit, einige Klassen von diesem Skript auszuschließen, damit die Interceptors beim Ausführen des Befehls nicht erstellt werden?
Als Beispiel: Ich möchte, dass der Controller Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticskeine Interceptors generiert.

Marius
quelle
Warum brauchst du das?
Anton Kril
@AntonKril. Hör auf, Fragen zu stellen und gib mir eine Lösung: D. Im Ernst, ich versuche, einige Module zu entfernen, und dabei setup:di:compileschlägt das fehl, weil einige übergeordnete Klassen fehlen. Die Klassen, die diese fehlenden Klassen erweitern, sind noch vorhanden, werden jedoch von der Anwendung nicht verwendet. Und ich kann sie nicht entfernen, da sie sich in Modulen befinden, die ich benötige. Eine vollständige Erklärung finden Sie unten: magento.stackexchange.com/questions/69040/…
Marius

Antworten:

7

Für die Ausführung von CLI zumindest in früheren Versionen gibt es den exclude-patternParameter. Es wurde hinzugefügt, um Probleme zu vermeiden, wenn eine Klasse nicht korrekt verarbeitet werden kann, wie dies beispielsweise bei magento1-Klassen der Fall ist. Die Befehle und Argumente haben sich möglicherweise geändert, indem sie in Konsolenbefehle konvertiert wurden.

Aber ich bin mir nicht sicher, was Ihr Ziel ist, daher kann ich nicht sagen, ob dies eine gute Lösung ist.

Flyingmana
quelle
Folgendes versuche ich zu tun. Ich entferne einige Module, um zu sehen, wie weit ich gehen kann. Zu diesen Modulen gehört das ReportModul. Aufgrund der engen Kopplung zwischen Berichten und dem Backend-Modul gibt es im Backend-Modul immer noch Klassen, die von den Klassen des Berichtsmoduls abhängen. Ich habe einen Weg gefunden, sie nicht zu verwenden, aber da der Befehl di die Dateien analysiert, durchläuft er die "ignorierten" Klassen und versucht, die Interceptors zu erstellen. Dies schlägt jedoch fehl, da beispielsweise die übergeordnete Klasse von Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsnicht vorhanden ist. Ich brauche also einen Weg, dies auszuschließen.
Marius
Es exclude-patternscheint, dass es im Konsolenbefehlsansatz keinen Parameter gibt. Zumindest habe ich es nicht gefunden. Ich schaute hinein DiCompileCommand::configure.
Marius
Ich sehe, Sie könnten ein Problem hinzufügen, das nach dieser Funktionalität mit Bezug auf diese PR fragt: github.com/magento/magento2/pull/986, oder Sie verwenden das dortige Änderungsset, um zu testen, wie es vorübergehend für Ihren lokalen Build hinzugefügt wird.
Flyingmana