W Magento 2 jakie są zalety i wady używania wtyczki w porównaniu z obserwatorem, aby coś osiągnąć?
Rozumiem, że obserwatorzy subskrybują wydarzenia, podczas gdy wtyczki mogą wskoczyć przed i / lub po wywołaniu metody publicznej na klasie Magento, ale z pewnością zbliżają się teraz bardzo do skrzyżowania ścieżek?
magento2
event-observer
plugin
Robbie Averill
źródło
źródło
Odpowiedzi:
Wtyczki są wszechobecne, ponieważ można modyfikować / zastępować zachowanie dowolnej metody publicznej w systemie. Dostosowania powinny być wykonywane przy użyciu wtyczek do publicznych metod / klas oznaczonych
@api
adnotacjami (stabilny publiczny interfejs API), gdy tylko jest to możliwe. Takie podejście gwarantuje, że dostosowywanie pozostanie funkcjonalne po nowych wersjach Magento. Opróczbefore
/after
wtyczek wymienionych w pytaniu, możliwe jest tworzeniearound
wtyczek w celu zastąpienia oryginalnego zachowania.Z drugiej strony, obserwatorzy są starszym mechanizmem rozszerzenia odziedziczonym po Magento 1, jest on dość ograniczony i należy go w miarę możliwości unikać. Jednak w przeciwieństwie do wtyczek mogą one zapewniać punkty rozszerzeń w metodach chronionych / prywatnych.
źródło
Zgodnie z przewodnikiem technicznym Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): NIE MOŻNA podawać wszystkich wartości (w tym obiektów) przekazywanych do zdarzenia zmodyfikowane w obserwatorze zdarzeń. Zamiast tego wtyczki MUSZĄ BYĆ używane do modyfikowania wejścia lub wyjścia funkcji.
Dla mnie główna różnica między wtyczkami a obserwatorami to:
źródło
checkout_submit_all_after
wydarzenia. Twój obserwator zostanie aktywowany po pomyślnym złożeniu zamówienia.