牛牛机器人 基于 PHP 8.6 beta 3 撰写,特性集已冻结。 [citation:26.3][citation:26.10]
今天(2026-09-18)发表在阿里云开发者社区等多平台,基于 PHP 8.6 beta 3 撰写,特性集已冻结。 [citation:26.3][citation:26.10]
---
一句话定位
PHP 8.6 是一个刻意做小的版本——没有 JIT 改动、没有属性钩子、没有联合类型。升级到 8.6 只需要一个下午,但在 8.6 上把代码改干净,正是避免 PHP 9.0 升级痛苦的方式。 [citation:26.10]
---
三件值得关注的事
1️⃣ 部分函数应用(PFA)—— 全票通过
这是真正的明星特性,33 票赞成、0 票反对——在语法类提案中几乎从未出现过 [citation:26.1]。
// 用 ? 占位,得到一个等待剩余参数的闭包
$makeSlug = str_replace(' ', '-', ?);
$makeSlug('Hello World'); // 'Hello-World'
// 管道运算符从此不再尴尬
// PHP 8.5:管道里塞满箭头函数
$result = $input
|> fn($s) => trim($s)
|> fn($s) => str_replace(' ', '-', $s);
// PHP 8.6:管道本身就是代码
$result = $input
|> trim(?)
|> str_replace(' ', '-', ?)
|> mb_strtolower(?);
还支持具名占位符,可以重新排列闭包的参数顺序——注入到参数顺序固定的接口时非常有用。
2️⃣ Time\Duration 类 —— 修正二十年的设计失误
PHP 标准库里一直缺少一个统一的「持续时间」类型。过去超时参数在 microseconds、seconds、ini_get 字符串之间混乱传递。Time\Duration 让超时语义从此统一,也是为 PHP 9.0 的异步原生能力铺路。 [citation:26.3]
3️⃣ ~30 项弃用 —— 真正的主题
这才是 8.6 这个版本真正的价值——弃用清单不是噪音,而是一张语言演进路线图。大部分来自 35 项独立 RFC 的投票 [citation:26.12]。
弃用的方向很清晰:
| 方向 | 代表弃用 | 9.0 的意图 |
|------|---------|-----------|
| 安全加固 | 弃用不安全加密函数、mysql_* 残余 | 强制使用现代 API |
| 类型严谨 | 隐式类型转换、弱模式行为 | 9.0 可能提升 strict_types 为默认 |
| 异步就绪 | 阻塞 I/O 旧函数警告 | 配合 True Async 项目 |
| 清理历史包袱 | 各种 deprecated 已久的函数/扩展 | 9.0 直接移除 |
---
和你之前聊的话题的联系
PHP 8.6 的「小版本做弃用、为大版本铺路」的做法,和你之前聊的几种架构策略是同一个思维模式:
| 你聊过的 | PHP 8.6 的对应 |
|---------|---------------|
| SKILL 微创手术 | 8.6 不动你的代码(微创),只发弃用警告(信号);9.0 才是真正动刀 |
| DDD 四重边界 | 弃用清单 = 限界上下文的演进——先划清「哪些以后不能用了」,再在 9.0 里移除 |
| 数据脱敏「不是增能力,是划边界」 | PHP 8.6 的核心也不是加功能(PFA 只是顺手),而是移除旧的边界,定义新的边界 |
| Codex 的遗忘机制 | 弃用 = 标记「过期→掉出选择集」;9.0 = 真正遗忘(七条遗忘路径中的「整体重置」) |
| 测试人越来越累 | 升级 8.6 不累,但不清掉这些弃用,到 9.0 就是一次大迁移——累在拖,而不是累在改 |
升级建议:8.6 发布后(2026-11-19),花一个下午升级运行时。然后逐个处理那 30 项弃用警告——每条弃用现在只发一个 EDEPRECATED,到 9.0 就是 EFATAL。现在处理一条删除一条旧代码的时间,是 9.0 升级时的十分之一。这和代码重构的规律一模一样:越早修越便宜,越等越贵。
牛牛机器人 / 牛牛算账机器人版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!