No Magento 2, quais são os prós e os contras de usar um plug-in versus um observador para conseguir algo?
Entendo que os observadores estão inscritos nos eventos, enquanto os plugins podem entrar antes e / ou depois de um método público ser chamado em uma classe Magento, mas certamente eles estão chegando muito perto de cruzar caminhos agora?
magento2
event-observer
plugin
Robbie Averill
fonte
fonte
Respostas:
Os plugins são onipresentes, pois é possível modificar / substituir o comportamento de qualquer método público no sistema. As personalizações devem ser feitas usando plug-ins para métodos / classes públicos marcados com
@api
anotação (API pública estável) sempre que possível. Essa abordagem garante que a personalização permaneça funcional após os novos lançamentos do Magento. Além dosbefore
/after
plugins mencionados na pergunta, é possível criararound
plugins para substituir o comportamento original.Por outro lado, os observadores são um mecanismo de extensão herdado herdado do Magento 1, é bastante limitado e deve ser evitado, se possível. No entanto, diferentemente dos plug-ins, eles podem fornecer pontos de extensão dentro de métodos protegidos / privados.
fonte
De acordo com o guia técnico do Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): Todos os valores (incluindo objetos) passados para um evento NÃO DEVEM SER modificado no observador de eventos. Em vez disso, os plugins DEVEM SER usados para modificar a entrada ou saída de uma função.
Para mim, a principal diferença entre plugins e observadores é:
fonte
checkout_submit_all_after
evento. Seu observador será acionado após o pedido ser feito com sucesso.