Was sind in Magento 2 die Vor- und Nachteile der Verwendung eines Plugins gegenüber einem Beobachter, um etwas zu erreichen?
Ich verstehe, dass Beobachter Ereignisse abonniert haben, während Plugins vor und / oder nach dem Aufruf einer öffentlichen Methode für eine Magento-Klasse einspringen können.
magento2
event-observer
plugin
Robbie Averill
quelle
quelle
Antworten:
Plugins sind allgegenwärtig, da das Verhalten jeder öffentlichen Methode im System geändert / ersetzt werden kann. Anpassungen sollten nach Möglichkeit mit Plugins für öffentliche Methoden / Klassen vorgenommen werden, die mit
@api
Annotation (stabile öffentliche API) gekennzeichnet sind. Ein solcher Ansatz garantiert, dass die Anpassung nach neuen Magento-Versionen weiterhin funktioniert. Zusätzlich zubefore
/after
plugins, die in der Frage erwähnt wurden, ist es möglich,around
Plugins zu erstellen, um das ursprüngliche Verhalten zu ersetzen.Andererseits sind Beobachter Legacy-Erweiterungsmechanismen, die von Magento 1 geerbt wurden. Sie sind ziemlich begrenzt und sollten nach Möglichkeit vermieden werden. Im Gegensatz zu Plugins können sie jedoch Erweiterungspunkte in geschützten / privaten Methoden bereitstellen.
quelle
Laut Magento Technical Guide ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): Alle Werte (einschließlich Objekte), die an ein Ereignis übergeben werden, DÜRFEN NICHT sein im Ereignisbeobachter geändert. Stattdessen sollten Plugins verwendet werden, um die Eingabe oder Ausgabe einer Funktion zu ändern.
Für mich ist der Hauptunterschied zwischen Plugins und Beobachtern:
quelle
checkout_submit_all_after
Ereignis erstellen . Ihr Beobachter wird nach erfolgreicher Bestellung ausgelöst.