Czy przechwytywanie ma być preferowaną metodą w przypadku zmiany zachowania oryginalnej metody w Magento2, tak jak obserwatorzy w Magento1?
https://wiki.magento.com/display/MAGE2DOC/Using+Interception
źródło
Czy przechwytywanie ma być preferowaną metodą w przypadku zmiany zachowania oryginalnej metody w Magento2, tak jak obserwatorzy w Magento1?
https://wiki.magento.com/display/MAGE2DOC/Using+Interception
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.
źródło
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.źródło