Réponses:
Je ne pense pas que l'interception vise à 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 (utilisant l' around
intercepteur) mais d'après ce que je comprends, c'est une approche risquée.
Je pense que c'est plus un moyen d'éviter autant que possible les réécritures de classe.
Dans Magento 1.x, si vous aviez besoin de modifier le résultat d'une méthode, vous deviez remplacer la classe qui 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 des données dans certains points fixes d'une méthode, pas la méthode complète elle-même.
À mon avis, l'utilisation d'observateurs lorsque cela est possible est toujours la meilleure approche pour la personnalisation, même dans Magento 2.
L'interception est l'évolution des événements. Son objectif est de permettre à un développeur d'écrire son code sans penser aux points d'extension.
Avec les événements, vous devez penser aux endroits où vous faites Mage :: dispatchEvent () pour que votre module soit personnalisable.
L'interception vous permet de ne pas y penser. Vous écrivez simplement votre logique métier. Chaque appel de méthode est un événement. Donc, si vous écrivez votre code de manière orientée objet, il sera entièrement personnalisable par conception.
Mais les événements fournissent une interface de service supérieure qui parle le langage des affaires. Les événements resteront donc dans Magento 2.
Actuellement, il y a toujours la possibilité d'écouter des événements spécifiques et je dirais que les intercepteurs ne sont qu'un remplacement pour les réécritures. J'utiliserais toujours les événements quand il y en a un pour vos besoins.
Si vous regardez la version actuelle, certains modules ont des 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>