大模型应用
开发 Magento 2…
在创建 Magento 2 自定义模块、扩展或新功能时,按 Adobe Commerce 最佳实践组织架构、实现服务契约与仓储模式。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 58/100 ×0.15
适用场景
开发 Magento 2 模块时如何按企特定
解决思路
- 规划与架构:拆解功能性与非功能性需求,设计模块结构与集成点、数据库实体关系与数据流、服务契约与数据传输对象(DTO),并规划可扩展性与性能优化。
- 搭建模块结构:按 Magento 约定创建目录结构 app/code/Vendor/ModuleName/,包含 etc/(module.xml、di.xml、routes.xml、system.xml、acl.xml、db_schema.xml)、Model/、Block/、Controller/、Api/、view/ 和 registration.php。
- 创建 registration.php 与 composer.json 完成注册,创建 etc/module.xml 声明模块并配置依赖,使用 Git 并配置合适的 .gitignore。
- 实现模型与实体:实体模型继承 Magento\Framework\Model\AbstractModel,资源模型继承 Magento\Framework\Model\ResourceModel\Db\AbstractDb,集合继承 Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection,使用 db_schema.xml 定义数据库结构。
- 实现仓储:在 Api/ 目录创建仓储接口,在 Model/ 目录实现仓储,用仓储模式封装数据访问,并通过服务契约提供干净的 API 接口。
- 实现服务类:将业务逻辑放在服务类中,所有依赖通过依赖注入获取,实现服务契约以支持扩展。
- 实现控制器:前台控制器继承 Magento\Framework\App\Action\Action,后台控制器继承 Magento\Backend\App\Action,API 控制器实现服务契约。
- 配置 module.xml:使用 <module name="Vendor_ModuleName" setup_version="1.0.0"> 并通过 <sequence> 声明依赖模块(如 Magento_Store)。
- 配置 di.xml:配置依赖注入,定义 preferences、virtual types、plugins,并按 global、frontend、adminhtml、webapi_rest、webapi_soap 等正确作用域配置。
- 配置 db_schema.xml:定义表、列、索引,使用正确的数据类型与约束,遵循 Magento 命名约定。
- 服务契约:在 Api/ 目录创建接口,实现干净的 API 接口,使用 DTO 交换数据,保持向后兼容。
- 仓储模式:将数据访问与业务逻辑分离,所有数据操作走仓储,实现正确的错误处理,必要时支持事务。
- 依赖注入:仅使用构造函数注入,避免服务定位器模式,利用 Magento DI 容器,为所有依赖添加类型提示。
- 插件系统:用插件扩展功能,优先使用 before/after 插件而非 around 插件,除非必要避免 around 插件,并记录插件执行顺序。
- 事件/观察者模式:通过派发事件提供扩展点,用观察者实现松耦合,遵循事件命名约定,记录事件数据结构。
- 后台组件:实现模型、资源模型、集合、仓储、服务、后台控制器与 API 端点、后台 Block 以及后台网格/表单等 UI 组件。
- 前台组件:实现前台控制器与动作、Block 视图逻辑与数据准备、正确转义的 PHTML 模板、XML 布局文件、前端交互与 AJAX 的 JavaScript、CSS/LESS 样式与响应式设计。
- 数据库组件:使用 db_schema.xml 定义结构,编写数据补丁(Data Patches)与结构补丁(Schema Patches),实现自定义搜索与过滤索引器(Indexers)。
- API 开发:创建带正确认证的 REST 端点,实现 GraphQL resolver 与 schema,设计干净的 API 接口,实现限流与安全措施。
- 事件系统集成:派发自定义事件以支持扩展,实现事件观察者,创建 before/after/around 插件,使用 virtual types 提升灵活性。
- 缓存与性能:实现自定义缓存类型与缓存标签,正确处理缓存失效,对昂贵操作使用懒加载,优化数据库查询与 join。
- 多店铺支持:处理多店铺配置,实现正确的配置作用域,确保数据正确隔离,支持店铺上下文切换。
- 代码质量:遵循 PSR-12 与 Magento 编码规范,在所有 PHP 文件中使用 declare(strict_types=1);,实现完整的类型提示,编写单元测试与集成测试,保持高代码覆盖率。
- 安全:实现输入校验,在模板中正确转义输出,实现 CSRF 防护,强制执行正确的访问控制(ACL),妥善处理敏感数据。
- 性能:优化数据库查询,使用正确的索引,实施缓存策略,监控内存使用,优化集合加载。
- 可扩展性:通过插件提供扩展点,派发事件以支持第三方集成,允许无需改代码即可配置,使用接口隔离,保持向后兼容。
- 测试:编写单元测试验证单个类与方法,编写集成测试验证模块与核心的集成,编写功能测试覆盖端到端场景,使用 PHPStan/Psalm 做静态分析。
- 文档:为开发者编写技术文档,为最终用户编写用户文档,为所有公开 API 编写 API 文档,编写安装指南与故障排查指南。
适用边界 · 注意事项
- 不使用 Magento 2 / Adobe Commerce 的项目不适用
- 仅做简单主题或前端样式调整、不涉及模块架构时无需完整流程