Magento 2 hat das Konzept von Plugins / Interception / Interceptors im Gegensatz zu Magento 1.
Diese wirken wie ein Vorher-Nachher-Ereignis für jede öffentliche Methode. Was nett ist.
Sie können das around
Plugin auch verwenden , um die Funktionalität einer Methode zu ersetzen.
Magento 2 bietet jedoch weiterhin die Möglichkeit, Klassen mehr oder weniger auf M1-Basis umzuschreiben.
Ich würde gerne einige Beispiele sehen, in denen das Umschreiben von Klassen der richtige Weg ist, anstatt Plugins zu verwenden.
Ich weiß, dass dies nützlich ist, wenn Sie das Verhalten einer geschützten Kernmethode ändern möchten, aber gibt es andere Fälle, in denen ein Umschreiben empfohlen oder erforderlich ist?
17
Antworten:
Der offensichtliche Grund, ein Umschreiben anstelle eines Plugins zu verwenden, ist, wenn Sie eine private, geschützte oder endgültige Methode überschreiben müssen .
Beachten Sie aber auch die folgenden Szenarien.
1. Szenario (absolute Sortierreihenfolge):
Rewrites können nützlich sein, wenn Sie Ihren Code vor Plugins ausführen müssen . Ich weiß, dass Sie dies tun können, indem Sie das Plugin einstellen
sortOrder
, aber Sie können nicht sicher sein, dass Ihr Code immer der erste ist, wenn jemand (nicht Sie) Komponenten von Drittanbietern installiert.2. Szenario (Code ausschließen):
Wenn Sie nur einen Teil des Codes in einer Methode ausschließen oder neu schreiben müssen , ist ein Plugin möglicherweise nicht optimal. Ich weiß, Sie können ein
around
Plugin verwenden und den Aufruf des vermeidenproceed
, aber dies könnte andere Plugins im Stack beschädigen.3. Szenario (Codestil):
Sie sollten Schreibungen verwenden , wenn Sie benötigen zu umschreiben ein Verhalten, Plugins sollte verwendet werden , die Ausgabe zu modifizieren oder Ausführen von Code vor / nach.
Ein Plugin sollte immer den Originalcode ausführen , um zu vermeiden, dass andere Module beschädigt werden.
Meine Schlussfolgerung:
Wenn Sie eine Kernmethode als Black Box mit einer Eingabe und einer Ausgabe betrachten und sich nicht mit den internen Mechanismen auskennen, ist ein Plug-in die beste Option.
Wenn Sie ein internes Verhalten ändern müssen , ist ein Umschreiben möglicherweise die beste Option.
quelle
Tolle Frage, ich habe mir neulich das Gleiche gefragt und habe mir Folgendes ausgedacht:
Quelle: Magento U Grundkurs
quelle