magento2编程最佳实践之观察者

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

概述

观察者能够修改 Magento 应用程序的行为,因为它们被动态注入到执行流程中。设计和编码不当的观察器可能会导致问题、不稳定或以其他方式破坏应用程序。

我们鼓励您遵循这些旨在减少执行观察者时出现的问题的最佳实践。

最佳实践

让你的观察者更有效率

如果可能的话,尽量避免复杂的计算,从而使观察者保持小型化和高效化。当您的观察者正在侦听频繁调度的事件时,这一点尤其重要。在观察者中进行复杂的计算会减慢应用程序进程。

不包含业务逻辑

您的观察者不应包含运行所需的逻辑以外的逻辑。业务逻辑应该封装在您的观察者使用的其他类中。

在适当的范围内声明观察者

使您的观察者尽可能具体。在适当的区域声明你的观察者:

区域文件位置描述
global<module-dir>/etc/events.xmlObserver 将在所有区域执行:adminhtmlcrontabfrontendgraphqlwebapi_restwebapi_soap
adminhtml<module-dir>/etc/adminhtml/events.xml观察者将adminhtml仅在该区域执行。
crontab<module-dir>/etc/crontab/events.xml观察者将crontab仅在该区域执行。
frontend<module-dir>/etc/frontend/events.xml观察者将frontend仅在该区域执行。
graphql<module-dir>/etc/graphql/events.xml观察者将graphql仅在该区域执行。
webapi_rest<module-dir>/etc/webapi_rest/events.xml观察者将webapi_rest仅在该区域执行。
webapi_soap<module-dir>/etc/webapi_soap/events.xml观察者将webapi_soap仅在该区域执行。

这是NOT RECOMMENDED注册该global区域中的所有内容,因为引导过程将变得更加繁重。例如,应用程序必须为您的观察者运行和处理额外的检查。

避免周期性事件循环

当您的观察者调用一个对象的方法时,会发生循环事件循环,该对象调度一个事件,该事件触发一系列事件,最终调度以重复方式执行您的观察者的相同初始事件。确保您的观察者没有分派它立即侦听或将在随后的事件链中侦听的事件。

不要依赖调用顺序

你的观察者不应该对它被调用的顺序做出假设,也不应该依赖另一个观察者的执行。侦听相同事件的观察者可以在调度该事件时以任何顺序调用。

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。