Non troverai una risposta buona, chiara e deterministica qui. In generale, dovresti inviare eventi nel tuo modulo dove tu e i tuoi utenti ne hanno bisogno - se non riesci a pensare a dove potrebbero essere necessari, non è necessario inviarli. Magento stesso emette così tanti eventi in così tanti luoghi diversi (spedizione pre / post del controller, qualsiasi operazione crud, ecc.) Che il tuo modulo invierà già un certo numero di eventi utili senza che tu faccia nulla.
Poiché ciò non è soddisfacente, vorresti che il tuo modulo inviasse un evento quando c'è qualche azione che il tuo modulo intraprende a cui i tuoi utenti potrebbero voler aggiungere elementi, eliminare elementi, cambiare o intraprendere un'azione separata indipendentemente dall'azione originale. Ad esempio: Magento ha un visitor_init
evento che non fa parte della sua suite standard di eventi generati automaticamente. Questo evento consente ai programmatori di modificare l'oggetto visitatore prima che Magento registri i dati. Non era in alcun modo che gli sviluppatori del modulo originale lo sapessero in modo deterministicoè qui che è necessario aggiungere un evento, probabilmente derivante da richieste di funzionalità e / o interviste con utenti di sistema. Scopri cosa vogliono i tuoi utenti e, se non è possibile / pratico creare una UI / UX per lasciarli fare tramite l'amministratore, aggiungi un hook di evento in modo che un altro programmatore possa farlo per loro.
Meno sensualmente, l'aggiunta di eventi può anche essere un modo economico per consentire agli sviluppatori (sia i tuoi utenti, sia il tuo team) di aggiungere alcune funzionalità in un pezzettino di codice che tutti hanno paura di toccare. Effettua la dispatchEvent
chiamata nel mezzo del codice, aggancialo e puoi aggiungere la tua funzionalità senza disturbare il codice nell'ambito originale. [Editor: anche tu dovresti refactoring quel codice terribile ad un certo punto]
Per quanto riguarda le prestazioni, l'aggiunta di un evento alla spedizione dipenderà da dove lo aggiungi. Quando si chiama un dispatch
evento, Magento deve effettuare alcune chiamate PHP aggiuntive, interrogare la configurazione per eventuali osservatori configurati e quindi chiamare gli osservatori. Fatto una volta, si tratta di un'aggiunta economica nell'ambito di una spedizione Magento standard. Tuttavia, fatto ripetutamente, (diciamo, prima di ogni rendering di blocco) questo può sommarsi. Non c'è una buona regola empirica qui - come sempre la risposta giusta è profilo.
Infine, con Magento 2, è ancora troppo presto per dirlo. Tutto quanto sopra vale ancora, tuttavia il sistema di plugin aggiunge alcune rughe. I plug-in sono, da un punto di vista, un modo per creare comportamenti simili a eventi per qualsiasi chiamata di metodo pubblica in Magento. In teoria, se stai progettando correttamente le tue lezioni, non dovresti mai aver bisogno di un evento. Tuttavia, in pratica, trascinare un evento in un po 'di codice di metodo protetto o privato sarà una soluzione allettante per gli sviluppatori Magento quando l'alternativa è un lungo processo di refactoring. Inoltre, la creazione di un evento con un nome specifico può spesso creare un'esperienza più amichevole per gli sviluppatori che utilizzano il modulo.
Spero possa aiutare!