首页
/ Rector 2.0.17版本发布:PHP代码现代化工具的重大更新

Rector 2.0.17版本发布:PHP代码现代化工具的重大更新

2025-06-06 10:01:35作者:齐添朝

项目介绍

Rector是一个强大的PHP代码重构工具,它能够自动化地将旧版PHP代码转换为更现代、更高效的语法。通过分析代码结构并应用预定义的规则集,Rector可以帮助开发者快速升级代码库,提高代码质量,同时保持功能不变。本次发布的2.0.17版本带来了多项新特性、改进和错误修复。

核心新特性

PHP 8.5相关改进

本次更新引入了针对PHP 8.5的ArrayFirstLastRector规则,这是一个实用的新功能,可以自动将传统的数组首尾元素访问方式转换为更简洁的PHP 8.5语法。

PHP 8.3支持增强

  1. 只读匿名类支持:新增了ReadOnlyAnonymousClassRector规则,能够识别并转换匿名类为只读模式,符合PHP 8.3的新特性。

  2. 动态类常量访问DynamicClassConstFetchRector规则现在支持PHP 8.3引入的动态类常量访问语法,使代码更加灵活。

命令处理改进

修复了并行处理和非并行处理模式下additionalAutoloader->autoloadPaths()的工作方式,提高了工具的稳定性和兼容性。

重要错误修复

  1. 字符串处理修复StrContainsRector现在能够正确处理多字节字符串函数(如strposstrstr)的转换。

  2. 死代码分析改进IsClassMethodUsedAnalyzer现在正确使用类级别的Scope进行分析,提高了分析的准确性。

  3. PHP 8.4兼容性:修复了NewMethodCallWithoutParenthesesRector在类名带括号时的问题。

  4. 变量简化规则优化SimplifyUselessVariableRector现在能够正确处理三元运算符中的赋值操作。

  5. 只读类处理ReadOnlyClassRector现在能够正确处理隐式的公共只读属性。

代码质量提升

  1. 命名规范:优化了重复的DateTimeInterface对象类型检查,将其集中到PropertyNaming服务中。

  2. 自动导入改进

    • 修复了文档块中冲突别名的问题
    • 跳过保留类名的自动导入
    • 处理无命名空间文件中的类重命名情况
  3. 方法重命名RenameMethodRector现在能够正确处理trait中的方法重命名,包括trait自身和调用者。

类型声明增强

  1. 返回类型处理:修复了AddReturnTypeDeclarationRector在已经返回静态类型时的崩溃问题。

  2. 动态属性处理CompleteDynamicPropertiesRector现在能够正确处理后期静态绑定。

移除的规则和功能

  1. 死代码规则优化

    • 移除了数组回调使用的空类方法
    • 改进了私有未使用方法参数的检测
    • 跳过了通过$this使用的私有类常量
  2. 文档改进:移除了关于PHPUnit的说明,使用更主动的语态描述规则。

相关扩展更新

Rector Symfony扩展

  1. 命令输入属性:改进了InvokableCommandInputAttributeRector对Symfony 7.3命令类的处理,包括:
    • 保持$output参数
    • 处理#[\Override]注解
    • 添加参数名称、模式和描述
    • 使__invoke()方法公开
    • 处理来自常量的名称

Rector Doctrine扩展

  1. 类型化集合增强

    • 添加了数十条规则来处理Doctrine集合类型
    • 支持嵌入多关系初始化
    • 添加静态调用支持到集合包装器
    • 处理可为空的集合类型
    • 解耦新命名空间并移动相关规则
  2. 规则重命名:将ExplicitRelationCollectionRector重命名为更具描述性的InitializeCollectionInConstructorRector

Rector PHPUnit扩展

  1. 注解转属性:改进了PHPUnit 10/11中@covers@uses注解到属性的转换。

  2. 代码质量规则

    • 添加了非静态方法的额外检查
    • 跳过了静态箭头函数中的this调用
    • 改进了可为空实例的类型断言
  3. PHPUnit 12支持:添加了RemoveOverrideFinalConstructTestCaseRector规则。

总结

Rector 2.0.17版本带来了对最新PHP版本特性的全面支持,显著提升了代码分析的准确性和转换的可靠性。特别是对PHP 8.3和8.5新特性的支持,使开发者能够更容易地保持代码现代化。同时,对Symfony和Doctrine等流行框架的专门支持也得到了加强,使这些生态系统的升级更加顺畅。错误修复和性能改进使整个工具更加稳定可靠,是任何PHP项目现代化过程中不可或缺的助手。

登录后查看全文
热门项目推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
53
468
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
878
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.1 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
180
264
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
87
14
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
612
60