Respostas:
Eu não acho que a interceptação se destina a substituir os observadores de eventos.
Ainda existem eventos despachados no código Magento2.
Os interceptores são apenas uma maneira de processar a entrada ou saída de um método.
Ou o comportamento de um método (usando o around
interceptador), mas pelo que entendi isso é uma abordagem arriscada.
Eu acho que é mais uma maneira de evitar a reescrita de classe, tanto quanto possível.
No Magento 1.x, se você precisava modificar o resultado de um método, substituiu a classe que contém e o próprio método.
agora você pode simplesmente usar before
, after
ou around
interceptadores, para manipular os dados.
Com os observadores, você pode manipular dados em determinados pontos fixos de um método, não no método completo em si.
Na minha opinião, o uso de observadores, quando possível, ainda é a melhor abordagem para personalizar mesmo no Magento 2.
Interceptação é evolução de eventos. Seu objetivo é permitir que um desenvolvedor escreva seu código sem pensar em pontos de extensão.
Com os eventos, você precisa pensar em lugares onde você faz Mage :: dispatchEvent () para que seu módulo seja personalizável.
A interceptação permite que você não pense sobre isso. Você acabou de escrever sua lógica de negócios. Toda chamada de método é um evento. Portanto, se você escrever seu código de uma maneira orientada a objetos, ele será totalmente personalizável por design.
Mas os eventos fornecem uma Interface de Fornecimento de Serviço de nível superior que fala a linguagem comercial. Portanto, os eventos permanecerão no Magento 2.
Atualmente, ainda existe a opção de ouvir eventos específicos e eu sugeriria que os interceptores são apenas um substituto para as reescritas. Eu ainda usaria os eventos quando houver um para suas necessidades.
Se você observar a versão atual, alguns dos módulos possuem events.xml
arquivos que incluem as definições.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>