我想将一个项目升级到 PHP 8.2,并决定使用 Rector 进行升级。
事实证明,不仅如此,而且我完全低估了这有多容易。
什么是 Rector?
Rector 是一个免费且开源的工具,用 PHP 编写,允许你自动化各种重构任务。它会分析你的代码并应用你在它的 配置文件 中指定的任何 规则。你也可以 创建自己的规则。
如何将你的项目升级到 PHP 8.2
首先,将 Rector 安装为开发依赖项:
$ composer require --dev rector/rector
然后,在你的项目根目录下生成 rector.php
配置文件:
$ ./vendor/bin/rector init
打开该文件并将其内容替换为以下内容:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->sets([LevelSetList::UP_TO_PHP_82]);
};
运行干预检查,检查 Rector 将要进行的更改(以下以 app
文件夹为例):
$ ./vendor/bin/rector process app --dry-run
如果你对更改满意,就应用这些更改:
$ ./vendor/bin/rector process app
你也可以直接在配置文件中指定要分析的路径:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([
__DIR__ . '/app',
// ...
]);
$rectorConfig->sets([LevelSetList::UP_TO_PHP_82]);
};
然后只需运行:
$ ./vendor/bin/rector process
在幕后发生了什么?
在上述代码中,UP_TO_PHP_82
常量意味着应用了从 PHP 8.1 升级到 PHP 8.2 的规则,同时也应用了从 PHP 8.0 升级到 PHP 8.1 的规则,以及从 PHP 5.2 开始的所有其他版本。
换句话说,你可以使用 Rector 提供的预定义规则集一次性将整个代码库从 PHP 5.2 升级到最新版本。
但还有更多——你可以在这里查看可用的规则及其描述,这些规则远远超出了与版本相关的更改。正如前面提到的,如果需要,你也可以 创建自己的规则。
总结
Rector 已经引起了我的关注,我之前甚至使用过它几次,但我仍然对它的强大感到惊讶。
虽然最近似乎越来越多的人开始使用 Rector 和其他静态分析工具,例如 PHPStan,但它仍然被广泛地低估。其中一个原因可能是开发人员不知道它的潜力,而以上内容只是其中的一小部分。
有一本书籍深入介绍了 Rector,我打算很快阅读它。
本文最初发布于tech.osteel.me。
评论(0)