문제

관찰자가 magento1에 있었던 것처럼 Magento2에서 원래 메소드의 동작 변경을 처리할 때 차단이 선호되는 방법입니까?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception
도움이 되었습니까?

해결책

나는 이벤트 관찰자를 대체하기위한 것이라고 생각하지 않는다. 여전히 Magento2 코드에서 파견 된 이벤트가 있습니다.

인터셉터는 메소드의 입력 또는 출력을 처리하는 방법입니다.
또는 메소드의 행동 (around 인터셉터를 사용)하지만 이것이 이것이 이해하는 것에서도 위험한 접근 방식입니다.

클래스를 가능한 한 많이 재 작성하는 것을 피하는 방법이 더 많이 생각합니다.
Magento 1.x에서는 메서드 자체가 포함 된 클래스를 무시하는 데 필요한 방법의 결과를 수정 해야하는 경우. 이제 before, after 또는 around 인터셉터를 사용하여 데이터를 조작 할 수 있습니다.

관찰자가있는 메소드의 특정 고정 점에서 데이터를 조작 할 수 있습니다.

내 의견으로, 가능한 경우 관찰자를 사용하는 것은 여전히 Magento 2. 에도 사용자 정의를위한 최상의 접근 방식입니다.

다른 팁

차단은 사건의 진화입니다.목표는 개발자가 확장 점에 대해 생각하지 않고 코드를 작성할 수있게하는 것입니다.

이벤트를 사용하면 Mage :: DispatchEvent ()를 수행 할 수 있도록 Mage :: DispatchEvent ()를 생각해보십시오.

차단을 통해이를 생각하지 못할 수 있습니다.당신은 당신의 사업 논리를 작성하기 만하면됩니다.모든 메소드 호출은 이벤트입니다.따라서 코드를 적절한 객체 지향 방식으로 쓸 경우 디자인으로 완전히 사용자 정의 할 수 있습니다.

그러나 이벤트는 상위 수준의 서비스를 제공합니다. 비즈니스 언어를 말하는 인터페이스를 제공합니다.그래서 이벤트는 Magento 2에 남아 있습니다.

현재는 여전히 특정 이벤트를 수신할 수 있는 옵션이 있으며 인터셉터는 재작성을 대체하는 것일 뿐이라고 제안합니다.귀하의 필요에 맞는 이벤트가 있을 때 나는 여전히 해당 이벤트를 사용할 것입니다.

현재 릴리스를 보면 일부 모듈에는 events.xml 정의가 포함된 파일입니다.

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top