Nie znajdziesz tutaj dobrej, jasnej, deterministycznej odpowiedzi. Ogólnie rzecz biorąc, powinieneś wywoływać zdarzenia w module, w których Ty i Twoi użytkownicy ich potrzebujesz - jeśli nie możesz wymyślić, gdzie mogą być potrzebne, nie musisz ich wysyłać. Sam Magento emituje tak wiele zdarzeń w tak wielu różnych miejscach (wysyłanie kontrolera przed / po wysyłce, jakakolwiek operacja crud, itp.), Że moduł już wywoła wiele przydatnych zdarzeń bez twojej pomocy.
Ponieważ jest to niezadowalające, chcesz, aby moduł wywoływał zdarzenie, gdy moduł podejmie jakieś działania, do których użytkownicy mogą chcieć dodawać elementy, usuwać elementy, zmieniać lub podejmować osobne działanie niezależnie od działania pierwotnego. Na przykład - Magento ma visitor_init
zdarzenie, które nie jest częścią standardowego zestawu zdarzeń generowanych automatycznie. To wydarzenie pozwala programistom zmodyfikować objet użytkownika, zanim Magento zarejestruje dane. To nie był sposób, w jaki oryginalni twórcy modułów poznali deterministyczniew tym miejscu trzeba było dodać wydarzenie - prawdopodobnie pochodziło ono z zaproszeń do funkcji i / lub wywiadów z użytkownikami systemu. Wiedz, czego chcą Twoi użytkownicy, a jeśli nie jest możliwe / praktyczne zbudowanie interfejsu użytkownika / UX, aby umożliwić im to za pośrednictwem administratora, dodaj hak zdarzeń, aby inny programista mógł to dla nich zrobić.
Mniej seksownie, dodawanie zdarzeń może być również tani sposób, aby umożliwić programistom (zarówno użytkowników, a nawet swój zespół), aby dodać niektóre funkcje w gnarly kawałka kodu, który każdy boi się dotknąć. Umieść swoje dispatchEvent
połączenie w środku kodu, zaczep go i możesz dodać swoją funkcjonalność bez zakłócania kodu w oryginalnym zakresie. [Redaktor: W pewnym momencie powinieneś zreformować ten okropny kod]
Pod względem wydajności dodanie zdarzenia do wysyłki będzie zależeć od miejsca, w którym je dodasz. Kiedy wywołujesz dispatch
zdarzenie, Magento musi wykonać kilka dodatkowych wywołań PHP, zapytać o konfigurację dla dowolnego skonfigurowanego obserwatora, a następnie wywołać obserwatora. Zrobione raz, jest to tani dodatek w ramach standardowej wysyłki Magento. Jednak powtarzane wielokrotnie (powiedzmy przed renderowaniem każdego bloku) może się to sumować. Nie ma tu żadnej dobrej zasady - jak zawsze właściwą odpowiedzią jest profil.
Wreszcie, w / r / t Magento 2, jest jeszcze za wcześnie, aby powiedzieć. Wszystko powyższe nadal obowiązuje - jednak system wtyczek dodaje kilka zmarszczek. Wtyczki są, z jednego punktu widzenia, sposobem tworzenia zdarzeń podobnych do zachowań dla dowolnego publicznego wywołania metody w Magento. Teoretycznie, jeśli poprawnie projektujesz swoje zajęcia, nie powinieneś nigdy potrzebować wydarzenia. Jednak w praktyce upuszczenie zdarzenia w nieco chronionym lub prywatnym kodzie metody będzie kuszącym rozwiązaniem dla programistów Magento, gdy alternatywą jest długi proces refaktoryzacji. Ponadto utworzenie wydarzenia o określonej nazwie może często stworzyć bardziej przyjazne środowisko dla programistów korzystających z tego modułu.
Mam nadzieję, że to pomaga!