No vas a encontrar una respuesta buena, clara y determinista aquí. En general, debe enviar eventos en su módulo donde usted y sus usuarios los necesiten; si no puede pensar en algún lugar donde podrían ser necesarios, no necesita enviarlos. Magento mismo emite tantos eventos en tantos lugares diferentes (envío previo / posterior del controlador, cualquier operación sin importancia, etc.) que su módulo ya enviará una serie de eventos útiles sin que usted haga nada.
Dado que eso no es satisfactorio, querrá que su módulo envíe un evento cuando haya alguna acción que su módulo tome y que sus usuarios quieran agregar elementos, eliminar elementos, cambiar o realizar una acción independiente independientemente de la acción original. Por ejemplo, Magento tiene un visitor_init
evento que no forma parte de su conjunto estándar de eventos generados automáticamente. Este evento permite a los programadores modificar el objeto del visitante antes de que Magento registre datos. Los desarrolladores de módulos originales no sabían de manera deterministaaquí era donde se necesitaba agregar un evento, probablemente provenía de solicitudes de funciones y / o entrevistas con usuarios del sistema. Sepa lo que quieren sus usuarios, y si no es posible / práctico construir una UI / UX para permitirles hacerlo a través del administrador, agregue un enlace de eventos para que otro programador pueda hacerlo por ellos.
Menos sexualmente, agregar eventos también puede ser una forma económica de permitir que los desarrolladores (ya sea sus usuarios o incluso su equipo) agreguen algunas funcionalidades a un código retorcido que todos temen tocar. Coloque su dispatchEvent
llamada en el medio del código, conéctela y podrá agregar su funcionalidad sin alterar el código en el alcance original. [Editor: También deberías refactorizar ese horrible código en algún momento]
En cuanto al rendimiento, agregar un evento para despachar dependerá de dónde lo agregue. Cuando llama a un dispatch
evento, Magento necesita hacer algunas llamadas PHP adicionales, consultar la configuración de cualquier observador configurado y luego llamar a los observadores. Hecho una vez, esta es una adición económica en el alcance de un envío estándar de Magento. Sin embargo, hecho repetidamente (por ejemplo, antes de cada renderizado de bloque) esto puede sumar. No hay una buena regla general aquí, como siempre, la respuesta correcta es el perfil.
Finalmente, w / r / t Magento 2, todavía es demasiado pronto para decirlo. Todo lo anterior aún se aplica, sin embargo, el sistema de complemento agrega algunas arrugas. Los complementos son, desde un punto de vista, una forma de crear un comportamiento similar a un evento para cualquier llamada a un método público en Magento. En teoría, si está diseñando sus clases correctamente, nunca debería necesitar un evento. Sin embargo, en la práctica, colocar un evento en un código de método privado o protegido será una solución tentadora para los desarrolladores de Magento cuando la alternativa es un largo proceso de refactorización. Además, crear un evento con un nombre específico a menudo puede crear una experiencia más amigable para los desarrolladores que usan su módulo.
¡Espero que ayude!