You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Rector仅应用PHP兼容性相关的代码变更?

解决Rector仅保留PHP兼容性相关变更的方法

1. 使用兼容性专属规则集

Rector提供了专门针对PHP版本兼容性修复的规则集,完全不包含代码风格、最佳实践类的非必要变更。你可以替换原配置中的LevelSetList::UP_TO_PHP_82,改用SetList::PHP_COMPATIBILITY并指定目标PHP版本:

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->sets([
        SetList::PHP_COMPATIBILITY,
    ]);
    // 指定需要兼容的目标PHP版本
    $rectorConfig->phpVersion(PhpVersion::PHP_82);
    $rectorConfig->paths([
        // 你的项目路径
    ]);
};

这个规则集只会处理影响PHP版本兼容的问题,比如废弃函数替换、语法兼容修复等,不会执行array()转[]这类风格化变更。

2. 手动跳过非兼容性规则(备选方案)

如果必须保留LevelSetList的部分规则,可通过以下步骤精准过滤:

  • 执行vendor/bin/rector process --dry-run查看所有待执行的规则,筛选出风格优化、最佳实践类的非兼容性规则
  • 将这些规则加入withSkip列表,示例如下:
return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->sets([LevelSetList::UP_TO_PHP_82]);
    $rectorConfig->paths([
        // 你的项目路径
    ]);
    $rectorConfig->withSkip([
        LongArrayToShortArrayRector::class,
        ArraySyntaxRector::class,
        // 其他非兼容性规则
    ]);
};

3. 规则集区别说明

  • LevelSetList::UP_TO_PHP_X:是「升级到PHP X的全套方案」,包含兼容性修复、代码风格优化、最新特性引入三类变更
  • SetList::PHP_COMPATIBILITY:仅保留让代码在PHP X环境下正常运行的必要修复,完全不涉及风格或可选特性变更

内容的提问来源于stack exchange,提问作者Olle Härstedt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:34:52