답변:
나는 가로 채기가 이벤트 관찰자를 대체하기위한 것이 아니라고 생각합니다.
Magento2 코드에는 여전히 이벤트가 전달됩니다.
인터셉터는 메소드의 입력 또는 출력을 처리하는 방법 일뿐입니다.
또는 ( around
인터셉터를 사용하는) 메소드의 동작 이지만 이것이 내가 이해하는 것은 위험한 접근법입니다.
클래스 재 작성을 가능한 많이 피하는 방법이라고 생각합니다.
Magento 1.x에서 메소드 결과를 수정해야하는 경우 포함 된 클래스와 메소드 자체를 대체해야했습니다.
지금 당신은 간단하게 사용할 수 있습니다 before
, after
또는 around
데이터를 조작하는 인터셉터.
옵저버를 사용하면 전체 메서드 자체가 아니라 메서드의 특정 고정 지점에서 데이터를 조작 할 수 있습니다.
제 생각에는, 가능하면 옵저버를 사용하는 것이 여전히 Magento 2에서도 커스터마이징을위한 최선의 방법입니다.
차단은 사건의 진화입니다. 그것의 목표는 개발자가 확장 점을 생각하지 않고 코드를 작성할 수 있도록하는 것입니다.
이벤트를 사용하면 Mage :: dispatchEvent ()를 수행하는 위치를 고려해야 모듈을 사용자 정의 할 수 있습니다.
가로 채기를 사용하면 이에 대해 생각하지 않아도됩니다. 당신은 당신의 사업 논리를 작성합니다. 모든 메소드 호출은 이벤트입니다. 따라서 적절한 객체 지향 방식으로 코드를 작성하면 디자인에 따라 완전히 사용자 정의 할 수 있습니다.
그러나 이벤트는 비즈니스 언어를 말하는 더 높은 수준의 서비스 제공 인터페이스를 제공합니다. 따라서 이벤트는 마 젠토 2에 유지됩니다.
현재 특정 이벤트를 수신하는 옵션이 여전히 있으며 인터셉터는 재 작성을 대체하는 것입니다. 귀하의 필요에 맞는 행사가있을 때에도 행사를 계속 사용합니다.
현재 릴리스를 보면 일부 모듈 events.xml
에 정의가 포함 된 파일이 있습니다.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>