mcpField
M
magento-module-developer

magento-module-developer

github.com/maxnorm开发31440 次安装40 周前更新
代码仓库

关于 magento-module-developer

magento-module-developer 是面向 Magento 2 模块和扩展开发者的 skill,提供模块架构与实现模式指导。内容涵盖 API、数据库变更、测试及安全实践。

主要功能

  1. 01模块结构与架构规划
  2. 02Service contract 与 repository 模式
  3. 03依赖注入和 plugin 指导
  4. 04REST 与 GraphQL API 开发
  5. 05数据库架构与数据补丁
  6. 06测试、安全和性能实践

适用场景

  1. 01规划新的 Magento 2 模块
  2. 02实现自定义服务、控制器或 API
  3. 03添加数据库架构变更和数据迁移
  4. 04检查模块测试与安全实践

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/maxnorm/magento2-agent-skills --skill magento-module-developer

安装后在 Claude Code 中输入/magento-module-developer确认已加载。

详细介绍

Magento 2 模块开发者

擅长创建架构合理、易于维护且可扩展的 Magento 2 模块,并遵循 Adobe Commerce 最佳实践,与 Magento 核心框架无缝集成。

适用场景

  • 创建新的 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
  • 版本控制:使用适当的 .gitignore 设置 Git
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
  • 配置依赖注入
  • 定义首选项、虚拟类型和插件
  • 使用适当的作用域(global、frontend、adminhtml、webapi_rest、webapi_soap)
db_schema.xml
  • 定义数据库表、列和索引
  • 使用适当的数据类型和约束
  • 遵循 Magento 命名规范

设计模式与原则

服务契约
  • 在 Api/ 目录中创建接口
  • 实现清晰的 API 接口
  • 使用数据传输对象(DTO)交换数据
  • 保持向后兼容
存储库模式
  • 将数据访问与业务逻辑分离
  • 使用存储库执行所有数据操作
  • 实现适当的错误处理
  • 在需要时支持事务
依赖注入
  • 仅使用构造函数注入
  • 避免使用服务定位器模式
  • 利用 Magento 的 DI 容器
  • 为所有依赖项使用类型提示
插件系统
  • 使用插件扩展功能
  • 优先使用 before/after 插件,而不是 around 插件
  • 除非必要,否则避免使用 around 插件
  • 记录插件执行顺序
事件/观察者模式
  • 分发事件以支持扩展
  • 实现观察者以实现松散耦合
  • 使用规范的事件命名约定
  • 记录事件数据结构

模块组件

后端组件
  • 模型:实体模型、资源模型和集合
  • 存储库:数据访问层实现
  • 服务:业务逻辑和应用服务
  • 控制器:管理后台控制器和 API 端点
  • 区块:管理后台界面构建模块
  • UI 组件:管理后台网格、表单和组件
前端组件
  • 控制器:前端页面控制器和操作
  • 区块:视图逻辑和数据准备
  • 模板:带有适当转义处理的 PHTML 模板文件
  • 布局文件:XML 布局配置
  • JavaScript:前端交互和 AJAX 功能
  • CSS/LESS:样式和响应式设计
数据库组件
  • db_schema.xml:数据库架构定义
  • 数据补丁:数据迁移和设置脚本
  • 架构补丁:数据库结构修改
  • 索引器:自定义搜索和筛选索引器

高级功能

API 开发
  • 创建具备适当身份验证的 REST 端点
  • 实现 GraphQL 解析器和架构
  • 设计简洁的 API 接口
  • 实现速率限制和安全措施
事件系统集成
  • 分发自定义事件以支持扩展
  • 实现事件观察者
  • 创建 before/after/around 插件
  • 使用虚拟类型提升灵活性
缓存与性能
  • 实现自定义缓存类型和标签
  • 妥善处理缓存失效
  • 对开销较大的操作使用延迟加载
  • 优化数据库查询和联接
多店铺支持
  • 处理多店铺配置
  • 实现适当的配置作用域
  • 确保数据适当隔离
  • 支持切换店铺上下文

最佳实践

代码质量
  • 遵循 PSR-12 和 Magento 编码标准
  • 在所有 PHP 文件中使用 declare(strict_types=1);
  • 全面添加类型提示
  • 编写单元测试和集成测试
  • 保持较高的代码覆盖率
安全
  • 实现输入验证
  • 在模板中正确转义输出
  • 实现 CSRF 防护
  • 强制实施适当的访问控制(ACL)
  • 妥善处理敏感数据
性能
  • 优化数据库查询
  • 使用适当的索引
  • 实现缓存策略
  • 监控内存使用情况
  • 优化集合加载
可扩展性
  • 通过插件提供扩展点
  • 分发事件以支持第三方集成
  • 支持无需更改代码即可进行配置
  • 使用接口隔离
  • 保持向后兼容性

测试

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

文档

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

参考资料

专注于创建易于维护、可扩展且符合 Magento 企业级架构原则的模块。

评论

支持 Markdown