Dans Magento 2, quels sont les avantages et les inconvénients de l'utilisation d'un plugin par rapport à un observateur pour réaliser quelque chose?
Je comprends que les observateurs sont abonnés aux événements alors que les plugins peuvent intervenir avant et / ou après qu'une méthode publique soit appelée sur une classe Magento, mais ils sont sûrement très proches de se croiser maintenant?
magento2
event-observer
plugin
Robbie Averill
la source
la source
Réponses:
Les plugins sont omniprésents car il est possible de modifier / remplacer le comportement de n'importe quelle méthode publique du système. Les personnalisations doivent être effectuées à l'aide de plugins pour les méthodes / classes publiques marquées d'
@api
annotations (API publique stable) dans la mesure du possible. Une telle approche garantit que la personnalisation restera fonctionnelle après les nouvelles versions de Magento. En plus desbefore
/after
plugins mentionnés dans la question, il est possible de créer desaround
plugins pour remplacer le comportement d'origine.D'autre part, les observateurs sont un mécanisme d'extension hérité hérité de Magento 1, il est assez limité et devrait être évité si possible. Cependant, contrairement aux plugins, ils peuvent fournir des points d'extension à l'intérieur des méthodes protégées / privées.
la source
Selon le guide technique de Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): toutes les valeurs (y compris les objets) passées à un événement NE DOIVENT PAS être modifié dans l'observateur de l'événement. Au lieu de cela, les plugins DEVRAIENT ÊTRE utilisés pour modifier l'entrée ou la sortie d'une fonction.
Pour moi, la principale différence entre les plugins et les observateurs est:
la source
checkout_submit_all_after
événement. Votre observateur sera déclenché une fois la commande passée avec succès.