No creo que la intercepción pretenda reemplazar a los observadores de eventos.
Todavía hay eventos enviados en el código Magento2.
Los interceptores son solo una forma de procesar la entrada o salida de un método.
O el comportamiento de un método (usando el around
interceptor) pero, por lo que entiendo, es un enfoque arriesgado.
Creo que es más una forma de evitar reescrituras de clase tanto como sea posible.
En Magento 1.x, si necesita modificar el resultado de un método, debe anular la clase que contiene y el método en sí.
Ahora simplemente puede usar before
, after
o around
interceptores para manipular los datos.
Con los observadores puede manipular datos en ciertos puntos fijos de un método, no en el método completo en sí.
En mi opinión, usar observadores cuando sea posible sigue siendo el mejor enfoque para personalizar incluso en Magento 2.
La intercepción es la evolución de los eventos. Su objetivo es permitir que un desarrollador escriba su código sin pensar en puntos de extensión.
Con los eventos, debe pensar en los lugares donde realiza Mage :: dispatchEvent () para que su módulo sea personalizable.
La intercepción le permite no pensar en esto. Simplemente escribe tu lógica de negocios. Cada llamada a un método es un evento. Entonces, si escribe su código de una manera adecuada orientada a objetos, será completamente personalizable por diseño.
Pero los eventos proporcionan una interfaz de servicio de nivel superior que habla el lenguaje empresarial. Entonces los eventos permanecerán en Magento 2.
fuente
Actualmente todavía existe la opción de escuchar eventos específicos y sugeriría que los interceptores sean solo un reemplazo para las reescrituras. Todavía usaría los eventos cuando haya uno para sus necesidades.
Si observa la versión actual, algunos de los módulos tienen
events.xml
archivos que incluyen las definiciones.fuente