En Magento 2, ¿cuáles son las ventajas y desventajas de usar un complemento frente a un observador para lograr algo?
Entiendo que los observadores están suscritos a eventos, mientras que los complementos pueden saltar antes y / o después de que se llame a un método público en una clase de Magento, pero ¿seguro que ahora están muy cerca de cruzarse?
magento2
event-observer
plugin
Robbie Averill
fuente
fuente

Respuestas:
Los complementos son omnipresentes ya que es posible modificar / reemplazar el comportamiento de cualquier método público en el sistema. Las personalizaciones deben realizarse utilizando complementos para métodos / clases públicos marcados con
@apianotaciones (API pública estable) siempre que sea posible. Tal enfoque garantiza que la personalización seguirá siendo funcional después de los nuevos lanzamientos de Magento. Además debefore/afterplugins mencionados en la pregunta, es posible creararoundcomplementos para sustituir el comportamiento original.Por otro lado, los observadores son un mecanismo de extensión heredado heredado de Magento 1, es bastante limitado y debe evitarse si es posible. Sin embargo, a diferencia de los complementos, pueden proporcionar puntos de extensión dentro de métodos protegidos / privados.
fuente
De acuerdo con la guía técnica de Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): todos los valores (incluidos los objetos) pasados a un evento NO DEBEN ser modificado en el observador de eventos. En cambio, los complementos DEBERÍAN utilizarse para modificar la entrada o salida de una función.
Para mí, la principal diferencia entre complementos y observadores es:
fuente
checkout_submit_all_afterevento. Su observador se activará después de que el pedido se haya realizado correctamente.