关于 magento-module-developer
magento-module-developer 是面向 Magento 2 模块和扩展开发者的 skill,提供模块架构与实现模式指导。内容涵盖 API、数据库变更、测试及安全实践。
主要功能
- 01模块结构与架构规划
- 02Service contract 与 repository 模式
- 03依赖注入和 plugin 指导
- 04REST 与 GraphQL API 开发
- 05数据库架构与数据补丁
- 06测试、安全和性能实践
适用场景
- 01规划新的 Magento 2 模块
- 02实现自定义服务、控制器或 API
- 03添加数据库架构变更和数据迁移
- 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