Pergunta

É a interceptação se destina a ser o método preferido quando se lida com a mudança de comportamento de um método original em Magento2 como observadores foi em magento1?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception
Foi útil?

Solução

Eu não acho que a interceptação destina-se a substituir evento observadores.
Há ainda eventos expedidos no Magento2 código.

Os interceptores são apenas uma forma de processar a entrada ou saída de um método.
Ou o comportamento de um método (usando o around interceptor), mas o que eu entendo que isso é uma arriscada abordagem.

Eu acho que é mais uma maneira de evitar a classe reescreve o máximo possível.
No Magento 1.x, se necessário, modificar o resultado de um método necessário para substituir a classe que contém o método em si.
agora você pode simplesmente usar before, after ou around interceptores para manipular os dados.

Com observadores você pode manipular dados em determinados pontos fixos de um método, e não o método em si.

Na minha opinião, observadores, quando possível, é ainda a melhor abordagem para personalizar ainda no Magento 2.

Outras dicas

A interceptação é a evolução dos acontecimentos.Seu objetivo é permitir que um programador para escrever o seu código, sem pensar em pontos de extensão.

Com eventos que você tem que pensar sobre lugares onde você faz Mage::dispatchEvent() para que o módulo será personalizável.

Interceptação permite-lhe não pensar sobre isso.Você acabou de escrever sua lógica de negócios.Cada chamada de método é um evento.Portanto, se você escrever seu código em um bom maneira orientada a objetos, ele vai ser totalmente personalizável por design.

Mas os acontecimentos oferecer Serviço de nível mais alto Fornecer Interface que fala a linguagem dos negócios.Para que os eventos vão ficar em Magento 2.

Atualmente, ainda há a opção de ouvir a eventos específicos e gostaria de sugerir que os interceptores é apenas um substituto para reescreve.Eu ainda uso os eventos quando há um homem no lugar para as suas necessidades.

Se você olhar para o lançamento atual de algum dos módulos events.xml os ficheiros que incluem as definições.

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top