Rector PHP 完整指南:安装、方法与实战示例
Rector 是一款强大的 PHP 代码自动重构工具。它通过抽象语法树(AST)分析你的代码,并应用预设的转换规则,自动完成代码升级、新特性引入、废弃语法修复等繁琐任务,显著提升代码质量。
为什么需要 Rector?在现代 PHP 开发中,项目规模快速增长,手动重构数千行代码既耗时又易出错。Rector 能在几秒内完成复杂转换,特别适用于 PHP 7.x 升级到 8.x、从旧框架(如 Zend Framework 1 迁移到 Laminas)迁移,或引入严格类型和现代编程模式等场景。
Rector 的核心是“规则集”机制。你只需定义需要执行的转换(例如“将所有 array_* 函数调用替换为 str_* 函数”),Rector 就会自动扫描代码并执行修改。该工具完全可定制:既可使用社区预置规则集,也可创建自定义规则。Rector 还能集成到 CI/CD 流水线中,在每次提交时自动检查和修复代码。
安装
通过 Composer(PHP 标准包管理器)安装 Rector。在项目根目录执行以下命令:
composer require rector/rector --dev
--dev 参数表示仅用于开发环境,这是最佳实践,因为生产环境无需 Rector。
安装后验证是否成功:
vendor/bin/rector --version
如需全局安装(不推荐用于项目),可执行:
composer global require rector/rector
Rector 需要 PHP 7.2 或更高版本,建议使用 PHP 8.0+ 以获得最佳性能和完整功能支持。
快速上手:最小化实战示例
创建一个需要重构的简单 PHP 文件。假设有一段使用 create_function() 的旧代码(该函数已在 PHP 8.0 中移除)。
步骤 1. 创建 example.php 文件:
<?php
$oldFunction = create_function('$a, $b', 'return $a + $b;');
echo $oldFunction(1, 2); // 输出 3
步骤 2. 在项目根目录创建配置文件 rector.php:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Php80\Rector\Function_\CreateFunctionToAnonymousFunctionRector;
return static function (RectorConfig $rectorConfig): void {
// 指定要分析的目录
$rectorConfig->paths([
__DIR__ . '/example.php',
]);
// 注册规则:将 create_function 替换为匿名函数
$rectorConfig->rule(CreateFunctionToAnonymousFunctionRector::class);
};
步骤 3. 运行 Rector:
vendor/bin/rector process --dry-run
--dry-run 参数会预览将要执行的修改,但不会实际更改文件。要真正修改文件,执行:
vendor/bin/rector process
结果: example.php 文件将被转换为:
<?php
$oldFunction = function ($a, $b) {
return $a +