PHP 8.2 发布后,我把团队三个核心项目陆续升级到位,分享一波真实使用感受和踩坑记录。
【一、只读类(Readonly Classes)】
8.1 只有只读属性,8.2 直接支持整类只读。值对象(VO)终于有了语言级保障:一个 Money 类声明 readonly 后,任何运行时赋值都会抛错。我们替换掉了大量手工写的 immutable 防御代码,DTO 再也不会被意外改写。
【二、独立类型 null、false、true】
以前联合类型里写不了纯 false,现在可以声明函数返回 T|false,联合类型表达力大幅提升。配合静态分析工具 Psalm/PHPStan,错误率明显下降。
【三、随机数扩展】
内置 RandomRandomizer 抽象,mt_rand、random_int 的碎片化 API 终于统一。可注入、可测试,做抽奖、盐值生成都更安心。
【四、敏感参数脱敏】
新属性 SensitiveParameter:堆栈跟踪里自动打码密码、token 类参数。线上排错时再也不怕日志泄密,强烈建议所有接受凭证的函数都加上。
【五、弃用动态属性】
老项目里 $obj->foo = 1 这种随手挂属性的写法会触发弃用警告。迁移成本不高,但确实逼着团队把数据结构收敛到类定义上,长期是好事。
关于枚举:8.1 引入、8.2 生态全面成熟,配合 match 表达式和只读类,状态机的写法优雅了一个量级。Fiber 则更适合框架层作者,业务代码一般用不到。
升级建议:先上 PHPStan 全量扫描,再开弃用告警灰度跑一周,最后切版本。我们全程只花了一天半。
你们升级到 8.2 了吗?最戳你的特性是哪个?评论区聊聊。
PHP 8.2 新特性详解:枚举、只读属性、纤维
PHP 8.2 发布后,我把团队三个核心项目陆续升级到位,分享一波真实使用感受和踩坑记录。
【一、只读类(Readonly Classes)】
8.1 只有只读属性,8.2 直接支持整类只读。值对象(VO)终于有了语言级保障:一个 Money 类声明 readonly 后,任何运行时赋值都会抛错。我们替换掉了大量手工写的 immutable 防御代码,DTO 再也不会被意外改写。
【二、独立类型 null、false、true】
以前联合类型里写不了纯 false,现在可以声明函数返回 T|false,联合类型表达力大幅提升。配合静态分析工具 Psalm/PHPStan,错误率明显下降。
【三、随机数扩展】
内置 RandomRandomizer 抽象,mt_rand、random_int 的碎片化 API 终于统一。可注入、可测试,做抽奖、盐值生成都更安心。
【四、敏感参数脱敏】
新属性 SensitiveParameter:堆栈跟踪里自动打码密码、token 类参数。线上排错时再也不怕日志泄密,强烈建议所有接受凭证的函数都加上。
【五、弃用动态属性】
老项目里 $obj->foo = 1 这种随手挂属性的写法会触发弃用警告。迁移成本不高,但确实逼着团队把数据结构收敛到类定义上,长期是好事。
关于枚举:8.1 引入、8.2 生态全面成熟,配合 match 表达式和只读类,状态机的写法优雅了一个量级。Fiber 则更适合框架层作者,业务代码一般用不到。
升级建议:先上 PHPStan 全量扫描,再开弃用告警灰度跑一周,最后切版本。我们全程只花了一天半。
你们升级到 8.2 了吗?最戳你的特性是哪个?评论区聊聊。
【一、只读类(Readonly Classes)】
8.1 只有只读属性,8.2 直接支持整类只读。值对象(VO)终于有了语言级保障:一个 Money 类声明 readonly 后,任何运行时赋值都会抛错。我们替换掉了大量手工写的 immutable 防御代码,DTO 再也不会被意外改写。
【二、独立类型 null、false、true】
以前联合类型里写不了纯 false,现在可以声明函数返回 T|false,联合类型表达力大幅提升。配合静态分析工具 Psalm/PHPStan,错误率明显下降。
【三、随机数扩展】
内置 RandomRandomizer 抽象,mt_rand、random_int 的碎片化 API 终于统一。可注入、可测试,做抽奖、盐值生成都更安心。
【四、敏感参数脱敏】
新属性 SensitiveParameter:堆栈跟踪里自动打码密码、token 类参数。线上排错时再也不怕日志泄密,强烈建议所有接受凭证的函数都加上。
【五、弃用动态属性】
老项目里 $obj->foo = 1 这种随手挂属性的写法会触发弃用警告。迁移成本不高,但确实逼着团队把数据结构收敛到类定义上,长期是好事。
关于枚举:8.1 引入、8.2 生态全面成熟,配合 match 表达式和只读类,状态机的写法优雅了一个量级。Fiber 则更适合框架层作者,业务代码一般用不到。
升级建议:先上 PHPStan 全量扫描,再开弃用告警灰度跑一周,最后切版本。我们全程只花了一天半。
你们升级到 8.2 了吗?最戳你的特性是哪个?评论区聊聊。
你最期待 PHP 的哪个新特性?
45 人が参加ログインして投票
Topics:
#编程
コメント (7)
ログイン to comment
胡军59
2026-07-23
同问,等大神解答
徐强57
2026-08-26
已经转发给朋友了
科技达人
2026-09-01
PHP 8.2的枚举太好用了,终于不用再一堆常量了!
军事迷
2026-09-01
只读属性在值对象中特别实用,防止数据被意外修改。
程序员老王
著者 2026-09-01
纤维这个特性还在观望,感觉用例场景比较窄。
版主阿强
2026-09-01
好帖!已加精。建议大家在新项目中积极使用新特性。
周杰20
2026-09-08
请问有没有推荐的书籍?
コメント (7)