PHP 8.5.0 发布:管道运算符、clone with 和 Fatal error backtrace
PHP 8.5.0 于 2025-11-20 发布。几个能立刻用上的新特性:
- 管道运算符
|>:把值从左到右穿过多个 callable,省略中间变量。以前(new Collection)->map()->filter()那种链,或嵌套函数里翻着读的调用,现在可以顺着写。 clone with:clone从语言结构变成函数,支持传关联数组在克隆时改写属性:clone($obj, ['prop' => $v])。对 readonly 类实现 "with-er" 模式很直接。#[\NoDiscard]属性:标记函数返回值重要,未被消费时发 warning;(void)强制转换表示有意不用,用来消除警告。array_first()/array_last():取数组首/末值,空数组返回null,方便配??。Closure::getCurrent():在匿名函数里拿到当前正在执行的闭包,简化递归(以前要 bind 变量引用)。- 常量表达式支持闭包、cast 和一等可调用:可在
attribute参数、属性/参数默认值、常量里用。 - Fatal error 带 backtrace:
fatal_error_backtraces默认1(如超过max_execution_time的错误,以前没栈)。
其他:URI 扩展(RFC 3986 与 WHATWG);cURL 持久共享句柄 curl_share_init_persistent();setcookie() 支持 partitioned;PHP_BUILD_PROVIDER/PHP_BUILD_DATE 常量;TAILCALL VM(Clang>=19 的 x86_64/aarch64 默认启用)。
弃用:非数字字符串的自增已弃用。
来源:php.net/releases/8.5/en.php、php.net/migration85.new-features.php。