Odpowiedzi:
Nie sądzę, aby przechwytywanie miało zastąpić obserwatorów zdarzeń.
Nadal są zdarzenia wysyłane w kodzie Magento2.
Przechwytywacze to tylko sposób na przetworzenie danych wejściowych lub wyjściowych metody.
Lub zachowanie metody (przy użyciu around
przechwytywacza), ale z tego, co rozumiem, jest to ryzykowne podejście.
Myślę, że jest to raczej sposób na uniknięcie przepisywania klas w jak największym stopniu.
W Magento 1.x, jeśli trzeba było zmodyfikować wynik metody, trzeba było przesłonić klasę zawierającą i samą metodę.
Teraz możesz po prostu użyć before
, after
lub around
przechwytujących do manipulowania danymi.
Za pomocą obserwatorów możesz manipulować danymi w określonych stałych punktach metody, a nie w samej metodzie pełnej.
Moim zdaniem używanie obserwatorów, gdy jest to możliwe, jest nadal najlepszym podejściem do dostosowywania nawet w Magento 2.
Przechwytywanie to ewolucja wydarzeń. Jego celem jest umożliwienie programistom napisania swojego kodu bez myślenia o punktach rozszerzenia.
W przypadku zdarzeń musisz pomyśleć o miejscach, w których wykonujesz Mage :: dispatchEvent (), aby Twój moduł można było dostosować.
Przechwytywanie pozwala ci o tym nie myśleć. Po prostu piszesz swoją logikę biznesową. Każde wywołanie metody jest zdarzeniem. Więc jeśli napiszesz swój kod we właściwy sposób obiektowy, będzie on w pełni konfigurowalny z założenia.
Jednak wydarzenia zapewniają wyższy poziom interfejsu zapewniającego obsługę, który mówi w języku biznesowym. Wydarzenia pozostaną w Magento 2.
Obecnie nadal istnieje opcja odsłuchiwania określonych wydarzeń i sugerowałbym, że przechwytywacze są tylko zamiennikiem przepisywania. Nadal korzystałbym z wydarzeń, kiedy jest jedno na twoje potrzeby.
Jeśli spojrzysz na bieżącą wersję, niektóre moduły mają events.xml
pliki zawierające definicje.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>