
PHP 8.5 没有废弃任何功能
PHP 8.5 尚未发布,官方也从未宣布或实现任何废弃(deprecated)行为。截至 PHP 8.4.0(2024 年 11 月最新稳定版),所有已废弃的特性均来自更早版本(如 8.0–8.3),且 PHP 8.4 本身只新增了 1 个废弃项:mb_ereg_replace() 系列函数(含 mb_ereg()、mb_eregi() 等)。
为什么你会看到“PHP 8.5 废弃列表”这类搜索结果
常见误解来源有三个:
- 把 PHP 8.4 的 RFC 或开发分支快照误标为 “8.5”
- 将 PHP 9.x 的早期讨论(如废弃
create_function()的提案重提)混入 8.5 标签 - 部分博客/工具自动生成的“预测性列表”,未标注信息源与时效性
PHP 官方发布节奏明确:每个主版本只在 RC 阶段冻结特性,废弃行为必须出现在正式版 CHANGELOG 和 php -v 启动时的警告中。目前没有任何 PHP 8.5 版本存在,也就没有对应的废弃清单。
当前(PHP 8.4)真正被废弃的功能有哪些
如果你实际在升级项目并看到 Deprecated 警告,大概率是以下几项:
立即学习“PHP免费学习笔记(深入)”;
-
mb_ereg_replace()及配套函数(mb_ereg()、mb_eregi_replace()等)——因 PCRE2 全面替代而废弃,改用mb_preg_replace()或原生preg_replace() -
mysql_connect()等 MySQL 扩展函数 —— 自 PHP 7.0 起废弃,PHP 8.0 已彻底移除(不是 8.5) -
each()函数 —— PHP 7.2 废弃,8.0 移除 -
assert()的字符串参数形式(如assert('is_int($x)'))—— PHP 7.2 废弃,8.0 移除;现在只支持布尔表达式或AssertionError实例
这些都不是新东西,但容易在老旧代码里突然冒出来,尤其当从 PHP 7.x 直升 8.4 时,error_reporting(E_ALL) 会立刻暴露它们。
怎么确认某个函数是否真被废弃了
别信第三方列表,直接查三处:
- PHP 官网手册对应函数页 —— 看顶部是否有「Deprecated」红色标签和替代说明
- PHP 源码仓库的
UPGRADING文件(如 php-8.4/UPGRADING)—— 搜索deprecated - 本地运行
php -d error_reporting=32767 -r "mb_ereg('','');"—— 如果输出Deprecated:开头的警告,才算真废弃
注意:有些 IDE 或静态分析工具(如 PHPStan)会提前标记“未来可能废弃”的函数,但这不等于运行时废弃。真实废弃一定伴随运行时警告,且写进官方文档。
现在能确定的只有:PHP 8.5 还没来,别为它操心废弃问题。该盯紧的是你正在跑的 PHP 版本的实际警告,以及 UPGRADING 文件里白纸黑字写的那几行。











