首页
Preview

使用 Rector 将你的项目升级到 PHP 8.2

一个控制台终端显示运行 Rector 的结果

我想将一个项目升级到 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

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
anko
宽以待人处事,严于律己修身。

评论(0)

添加评论