用途
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 文档
- 安装指南
- 故障排查指南
限制
资料未提供该技能的具体安装命令、收费方式、价格、平台支持范围或实际使用效果等信息,暂未提供。