PHP 8.5 计划于 2025 年 11 月 20 日正式发布,这标志着 PHP 语言在提高开发者效率和代码一致性方面迈出了重要一步。这个版本带来了一系列改进,包括 10 个重要的新特性 和 4 项废弃通知,旨在为开发者提供更流畅、更具表达力的编码体验。

以下是 PHP 8.5 版本的详细总结。
|>)管道操作符 (|>) 是 PHP 8.5 中最受期待的功能。它允许开发者以链式、从左到右的方式处理数据,将前一个表达式的结果作为第一个参数传递给后一个可调用对象。这解决了使用嵌套函数调用时可读性差,或使用临时变量时代码冗长的问题。
使用示例:数据清洗流程
$rawInput = " My New Article Title! ";
$cleanSlug = $rawInput
|> trim(...) // 移除首尾空格
|> strtolower(...) // 转换为小写
|> fn($s) => str_replace(' ', '-', $s); // 使用箭头函数替换空格
echo $cleanSlug; // 输出: "my-new-article-title!"array_first() 和 array_last()这两个新函数弥补了 PHP 数组操作长期以来的一个痛点。它们可以安全、高效地获取数组的第一个和最后一个值,而不会像 reset() 和 end() 那样干扰数组的内部指针。
$inventory = ['apple' => 10, 'banana' => 5, 'cherry' => 2];
$firstItemCount = array_first($inventory); // 10
$lastItemCount = array_last($inventory); // 2
// 数组为空时返回 null
$empty = [];
var_dump(array_first($empty)); // null当 PHP 遇到内存耗尽(Fatal Error)等不可恢复的错误时,PHP 8.5 现在会提供完整的堆栈追踪(Stack Trace)。这项改进极大地提高了生产环境下的调试效率,帮助开发者快速定位是哪个调用链导致了崩溃。该功能可通过 fatal_error_backtraces INI 指令控制。
新增 get_error_handler() 和 get_exception_handler() 两个函数。它们允许开发者在不修改当前配置的情况下,查询正在生效的错误或异常处理器。这使得创建更健壮、可嵌套的错误处理逻辑变得更加简单。
max_memory_limit INI 指令引入新的 max_memory_limit INI 指令(INI\_SYSTEM),用于设置 memory_limit 的最高上限。即使脚本尝试使用 ini_set() 将内存限制设置得更高或无限,也无法超过这个系统级别设置的值,有效防止了资源滥用。
curl_multi_get_handles()新增 curl_multi_get_handles() 函数,用于从 CurlMultiHandle 对象中获取所有活动的 CurlHandle 列表。这对于管理大规模并发 HTTP 请求的句柄集合非常实用。
locale_is_right_to_left()Intl 扩展新增 locale_is_right_to_left() 函数和 Locale::isRightToLeft() 方法,用于检测给定区域设置(locale)是否使用 RTL(从右向左)书写系统(如阿拉伯语和希伯来语)。
IntlListFormatter 类新增 IntlListFormatter 类,提供对列表进行本地化格式化的能力。它能根据不同的语言环境和类型(AND, OR, UNITS)正确地格式化列表的连接词和标点符号。
php --ini=diffPHP CLI 引入了一个实用的新选项 php --ini=diff,执行后会列出所有与 PHP 内置默认值不同的 INI 配置项。这对于对比和排查不同运行环境下的配置差异非常高效。
PHP_BUILD_DATE新增 PHP_BUILD_DATE 常量,直接暴露 PHP 二进制文件构建的日期和时间。该信息以前只能通过解析 phpinfo() 复杂的输出获得,现在变得易于访问,方便了自动化脚本和版本日志记录。
PHP 8.5 继续朝着语言一致性迈进,引入了四项废弃通知,为 PHP 9.0 的最终清理做准备。
废弃了四种非规范化的类型转换写法,要求开发者统一使用短格式或规范化名称:
(integer) → 推荐使用 (int)(double) → 推荐使用 (float)(boolean) → 推荐使用 (bool)(binary) → 推荐使用 (string)
MHASH_* 常量废弃:由于 mhash 函数已在 PHP 8.1 中废弃,PHP 8.5 接着废弃了所有相关的 MHASH_* 常量。应迁移到 hash() 函数,并使用哈希算法的字符串名称。
自定义的输出缓冲处理器(在 ob_start() 中设置的回调)现在必须返回一个字符串。返回非字符串值(如数组、true 等)将触发废弃通知。
自定义的输出缓冲处理器不应该在自身内部产生任何输出(如使用 echo 或 print)。这种行为现在会触发废弃通知,因为处理器应该只通过返回字符串来修改缓冲区内容。
PHP 8.5 是一次以开发者为中心的迭代,管道操作符等功能将显著提升我们日常编写代码的效率和乐趣。
虽然 PHP 8.5 的正式版发布时间定在 2025 年 11 月中下旬,但作为专业的本地开发环境管理工具,ServBay 已经率先支持 PHP 8.5。

开发者完全不用自行进行复杂的编译或配置,就可以通过 ServBay 轻松地下载、配置并运行 PHP 8.5 的版本。利用 ServBay 的便捷性,可以:
选择 ServBay,让您提前锁定 PHP 8.5 的强大功能,确保您的开发工作始终处于技术前沿!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。