SuperAPI AI 工具集

magento-module-developer

编程与开发

查看项目

更新于 10-15 14:13

技能介绍

用途

Magento 2 Module Developer 是一个专注于创建架构良好、可维护且可扩展的 Magento 2 模块的技能,使模块能够无缝集成 Magento 核心框架,并遵循 Adobe Commerce 最佳实践。

适用场景包括:

  • 创建新的 Magento 2 模块或扩展
  • 实现自定义功能
  • 构建模块架构与结构
  • 设置模块依赖与配置
  • 实现服务契约与 API
  • 创建数据库架构与数据补丁

模块开发流程

1. 规划与架构

  • 需求分析:拆解功能性与非功能性需求
  • 架构设计:规划模块结构与集成点
  • 数据库设计:设计实体关系与数据流
  • API 设计:定义服务契约与数据传输对象
  • 性能考量:规划可扩展性与优化

2. 模块搭建

按 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

3. 核心实现

模型与实体:

  • 实体模型继承 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 控制器实现服务契约

4. 配置文件

module.xml 示例:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_ModuleName" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Store"/>
        </sequence>
    </module>
</config>

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 插件
  • 记录插件执行顺序

事件/观察者模式:

  • 分发事件以支持扩展
  • 实现观察者以实现松耦合
  • 使用正确的事件命名约定
  • 记录事件数据结构

模块组件

后台组件:

  • Models:实体模型、资源模型、集合
  • Repositories:数据访问层实现
  • Services:业务逻辑与应用服务
  • Controllers:后台控制器与 API 端点
  • Blocks:后台界面构建块
  • UI Components:后台网格、表单与组件

前端组件:

  • Controllers:前端页面控制器与动作
  • Blocks:视图逻辑与数据准备
  • Templates:带正确转义的 PHTML 模板文件
  • Layout Files:XML 布局配置
  • JavaScript:前端交互与 AJAX 功能
  • CSS/LESS:样式与响应式设计

数据库组件:

  • db_schema.xml:数据库架构定义
  • Data Patches:数据迁移与安装脚本
  • Schema Patches:数据库结构修改
  • Indexers:自定义搜索与过滤索引器

高级特性

API 开发:

  • 创建带正确认证的 REST 端点
  • 实现 GraphQL 解析器与 schema
  • 设计清晰的 API 接口
  • 实现限流与安全措施

事件系统集成:

  • 分发自定义事件以支持扩展
  • 实现事件观察者
  • 创建 before/after/around 插件
  • 使用 virtual types 提升灵活性

缓存与性能:

  • 实现自定义缓存类型与标签
  • 正确处理缓存失效
  • 对昂贵操作使用懒加载
  • 优化数据库查询与连接

多店铺支持:

  • 处理多店铺配置
  • 实现正确的配置作用域
  • 确保数据正确分离
  • 支持店铺上下文切换

最佳实践

代码质量:

  • 遵循 PSR-12 与 Magento 编码标准
  • 在所有 PHP 文件中使用 declare(strict_types=1);
  • 实现全面的类型提示
  • 编写单元测试与集成测试
  • 保持高代码覆盖率

安全:

  • 实现输入验证
  • 在模板中使用正确的输出转义
  • 实现 CSRF 保护
  • 实施正确的访问控制(ACL)
  • 妥善处理敏感数据

性能:

  • 优化数据库查询
  • 使用正确的索引
  • 实现缓存策略
  • 监控内存使用
  • 优化集合加载

可扩展性:

  • 通过插件提供扩展点
  • 分发事件以支持第三方集成
  • 允许无需修改代码即可配置
  • 使用接口隔离
  • 保持向后兼容性

测试:

  • 单元测试:测试单个类与方法
  • 集成测试:测试模块与核心的集成
  • 功能测试:端到端测试场景
  • 静态分析:使用 PHPStan/Psalm 检查代码质量

文档:

  • 面向开发者的技术文档
  • 面向最终用户的用户文档
  • 所有公共 API 的 API 文档
  • 安装指南
  • 故障排查指南

限制

资料未提供该技能的具体安装命令、收费方式、价格、平台支持范围或实际使用效果等信息,暂未提供。