В Magento 2, каковы плюсы и минусы использования плагина против наблюдателя для достижения чего-либо?
Я понимаю, что наблюдатели подписаны на события, в то время как плагины могут подключаться до и / или после вызова публичного метода для класса Magento, но наверняка они сейчас очень близки к пересечению путей?
magento2
event-observer
plugin
Робби Аверилл
источник
источник
Ответы:
Плагины вездесущи, поскольку можно изменить / заменить поведение любого открытого метода в системе. Настройка должна быть выполнена с использованием плагинов для открытых методов / классов, помеченных
@api
аннотацией (стабильный общедоступный API), когда это возможно. Такой подход гарантирует, что настройка останется функциональной после новых выпусков Magento. В дополнение кbefore
/after
плагинов, упомянутых в вопросе, можно создаватьaround
плагины, чтобы заменить оригинальное поведение.С другой стороны, наблюдатели являются устаревшим механизмом расширения, унаследованным от Magento 1, он довольно ограничен и его следует по возможности избегать. Однако, в отличие от плагинов, они могут предоставлять точки расширения внутри защищенных / закрытых методов.
источник
Согласно техническому руководству Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): Все значения (включая объекты), передаваемые событию, НЕ ДОЛЖНЫ быть изменено в наблюдателе события. Вместо этого плагины ДОЛЖНЫ БЫТЬ использованы для изменения входа или выхода функции.
Для меня главное различие между плагинами и наблюдателями:
источник
checkout_submit_all_after
события. Ваш наблюдатель будет активирован после успешного размещения заказа.