답변:
플러그인은 시스템에서 공개 메소드의 동작을 수정 / 대체 할 수 있기 때문에 전적으로 사용됩니다. 사용자 정의는 @api
가능할 때마다 주석 (안정된 공용 API)으로 표시된 공용 메소드 / 클래스 용 플러그인을 사용하여 수행해야 합니다. 이러한 접근 방식은 새로운 마 젠토가 출시 된 후에도 커스터마이제이션이 계속 작동하도록 보장합니다. 질문에 언급 된 before
/ after
플러그인 외에도 around
원래 동작을 대체하는 플러그인을 만들 수 있습니다.
반면에 옵저버는 Magento 1에서 상속 된 레거시 확장 메커니즘이며, 매우 제한적이며 가능한 경우 피해야합니다. 그러나 플러그인과 달리 플러그인은 보호 / 개인 메소드 내에 확장 점을 제공 할 수 있습니다.
Magento 기술 안내서 ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ) 에 따르면 : 이벤트에 전달 된 모든 값 (객체 포함)은 이벤트 옵저버에서 수정되었습니다. 대신, 플러그인은 함수의 입력 또는 출력을 수정하는 데 사용해야합니다.
나를 위해 플러그인과 관찰자의 주요 차이점은 다음과 같습니다.
checkout_submit_all_after
이벤트에 대한 관찰자를 만들 수 있습니다 . 주문이 완료되면 관찰자가 시작됩니다.