L'interception dans magento2 remplace-t-elle les observateurs dans magento1 ?
-
12-12-2019 - |
Question
L'interception est-elle censée être la méthode préférée lorsqu'il s'agit de modifier le comportement d'une méthode originale dans Magento2 comme l'étaient les observateurs dans magento1 ?
https://wiki.magento.com/display/MAGE2DOC/Using+Interception
La solution
Je ne pense pas que l'interception soit destinée à remplacer les observateurs d'événements.
Il y a encore des événements distribués dans le code Magento2.
Les intercepteurs ne sont qu'un moyen de traiter l'entrée ou la sortie d'une méthode.
Ou le comportement d'une méthode (en utilisant le around
intercepteur) mais d'après ce que j'ai compris, c'est une approche risquée.
Je pense que c'est plutôt un moyen d'éviter autant que possible les réécritures de classes.
Dans Magento 1.x, si vous deviez modifier le résultat d'une méthode, vous deviez remplacer la classe qui la contient et la méthode elle-même.
maintenant vous pouvez simplement utiliser before
, after
ou around
intercepteurs pour manipuler les données.
Avec les observateurs, vous pouvez manipuler les données dans certains points fixes d'une méthode, et non dans la méthode complète elle-même.
À mon avis, utiliser des observateurs lorsque cela est possible reste la meilleure approche pour personnaliser, même dans Magento 2.
Autres conseils
L'interception est l'évolution des événements.Son objectif est de permettre à un développeur d'écrire son code sans réfléchir à des points d'extension.
Avec des événements, vous devez penser à des endroits où vous faites des mages :: Dispatchervent () Pour que votre module soit personnalisable.
Interception vous permet de ne pas y penser.Vous venez d'écrire votre logique professionnelle.Chaque appel est un événement.Donc, si vous écrivez votre code de manière adaptée à l'objet, il sera entièrement personnalisable par la conception.
Mais les événements fournissent un service de niveau supérieur fournissent une interface qui parle la langue d'activité.Donc, les événements resteront à Magento 2.
Actuellement, il existe toujours la possibilité d'écouter des événements spécifiques et je suggérerais que les intercepteurs ne remplacent que les réécritures.J'utiliserais toujours les événements lorsqu'il y en a un en place pour vos besoins.
Si vous regardez la version actuelle, certains modules ont events.xml
fichiers qui incluent les définitions.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>