PHP 8.3 发布之后,新项目直接采用新版本进行开发的团队越来越多,存量系统的迁移窗口也打开了。8.3 的变化主要是对类型系统和性能细节进行了改进,在落地之前应该逐个进行评估。

最实用的三个地方:类的常量支持类型声明,配置类常量的错误使用可以在加载阶段被发现;只读属性的深拷贝限制放宽,值对象在克隆场景下更加方便;匿名只读类可以直接声明,轻量级数据结构不需要再定义具名类。配合8.1起枚举和交叉类型,后台业务模型的数据校验提前到语言层,运行时断言代码明显减少。
性能收益主要体现在运行细节上。只读属性访问进行了优化,json 验证函数代替了部分正则表达式的使用,大数组序列化的时间减少了。框架类应用的整体提升幅度一般在个位数百分比左右,不值得为了性能而单独升级,但是如果迁移已经在计划之中,那么收益就是顺带的。
迁移需要注意三处。废弃项清单先过一遍,动态属性、部分字符串函数的行为变化会让旧代码直接报错;依赖包逐一确认兼容版本,框架大版本升级与语言升级不要安排在同一批发布;灰度环境跑完整回归,重点覆盖支付、文件上传和定时任务这三条链路。
建议的节奏是:新项目马上投入使用,存量项目随着框架升级而一并完成。语言版本停留在旧线上最大的损失不是性能,而是新框架版本和安全补丁的获取渠道会逐渐被关闭。