ConvertM1M2 项目教程
1. 项目介绍
ConvertM1M2 是一个用于将 Magento 1 扩展转换为 Magento 2 的简单脚本。该项目旨在自动化尽可能多的初始转换工作,以便开发者可以将更多时间用于无法自动化的任务,例如模板转换、JS/CSS 转换、代码优化和逻辑改进等。需要注意的是,该脚本不会生成完全可用的代码,开发者需要手动检查和修复每个生成的文件。
主要功能
- 配置转换
- ACL 键转换
- 布局菜单键转换
- 块类名转换
- 模板命名空间转换
- Web 文件复制
- 电子邮件模板复制
- i18n 文件复制
- 模板转换(部分)
- 类名转换
- 控制器文件分离
- 观察者文件分离
- PHP 代码转换(类名、命名空间、短数组语法等)
未来可能实现的功能
- 迁移设置
- 高级 PHP 代码转换
2. 项目快速启动
安装和使用
-
克隆项目
git clone https://github.com/unirgy/convertm1m2.git cd convertm1m2
-
配置文件 编辑
convert.php
文件,根据需要修改配置(文件开头部分)。 -
运行脚本
- Web 运行 确保以下路径存在:
$mage1Dir = '/magento/'; // Magento 1 目录 $sourceDir = 'source/'; // 源模块目录 $mage2Dir = '/magento2/'; // Magento 2 目录
- CLI 运行 使用以下命令运行脚本:
php convert.php s=source m=mage1_folder o=output a=stage
- Web 运行 确保以下路径存在:
示例文件和文件夹结构
[] Web 或 CLI 根目录
| +-[] convertm1m2/
| | +-() convert.php - 执行此脚本
| | +-[] source/
| | | +-[] Vendor_Module1/ - 原始 Magento 1 扩展文件
| | | +-[] Vendor_Module2/
| | +-[] app/code/community/Vendor/Module2/
| | +-[] app/etc/modules/Vendor_Module2.xml
| | +-[] skin/frontend/base/default/
| | +-[] magento/ - Magento 1 根目录
| | +-[] app/
| | +-[] skin/
| | +-[] magento2/ - Magento 2 根目录
| | +-[] app/
| | +-[] code/
| | +-[] Vendor/
| | +-[] Module1/ - 转换后的扩展文件
| | +-[] Module2/
自动转换后的步骤
- 运行阶段 2 检查类是否可以加载:
php convert.php a=2
- 修复父类或接口类。
- 修复构造函数或其他方法参数。
- 检查所有输出文件,手动转换 CSS、JS 和模板以支持 Magento 2 主题。
- 测试扩展,学习 Magento 2 并改进代码。
3. 应用案例和最佳实践
应用案例
- 电商扩展迁移:将旧的 Magento 1 电商扩展迁移到 Magento 2,以利用新平台的功能和性能提升。
- 模块重构:通过自动化工具减少手动重构的工作量,专注于代码优化和功能改进。
最佳实践
- 逐步转换:建议逐步转换,先进行自动转换,然后手动检查和修复每个文件。
- 测试驱动:在转换过程中进行充分的测试,确保每个功能都能正常工作。
- 社区支持:利用 Magento 社区资源,获取更多关于转换和优化的建议。
4. 典型生态项目
Magento 2 扩展开发
- Magento 2 官方文档:详细介绍了 Magento 2 的架构和开发指南。
- Magento 2 社区扩展:提供了大量开源的 Magento 2 扩展,可以作为参考和学习资源。
自动化工具
- Magento 2 迁移工具:Magento 官方提供的迁移工具,用于将数据和配置从 Magento 1 迁移到 Magento 2。
- PHP 代码分析工具:如 PHPStan、PHP_CodeSniffer,用于分析和优化 PHP 代码。
通过这些生态项目,开发者可以更好地理解和应用 ConvertM1M2 工具,提升 Magento 1 到 Magento 2 的转换效率和质量。