Вопрос

Предполагается ли, что перехват будет предпочтительным методом при изменении поведения исходного метода в Magento2, как это было с наблюдателями в magento1?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception
Это было полезно?

Решение

Я не думаю, что перехват призван заменить наблюдателей за событиями.
В коде Magento2 по-прежнему отправляются события.

Перехватчики — это всего лишь способ обработки входных или выходных данных метода.
Или поведение метода (с использованием around перехватчик), но насколько я понимаю, это рискованный подход.

Я думаю, что это скорее способ избежать переписывания классов, насколько это возможно.
В Magento 1.x, если вам нужно было изменить результат метода, вам нужно было переопределить содержащий его класс и сам метод.
теперь вы можете просто использовать before, after или around перехватчики для манипулирования данными.

С помощью наблюдателей вы можете манипулировать данными в определенных фиксированных точках метода, а не во всем методе.

По моему мнению, использование наблюдателей, когда это возможно, по-прежнему является лучшим подходом для настройки даже в Magento 2.

Другие советы

Перехват - это эволюция событий.Его цель - позволить разработчику написать свой код, не думая о точках расширения.

С событиями, которые вы должны подумать о местах, где вы делаете 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