本文目录导读:

PHP 8.4 是 PHP 最新的大版本更新(于 2024 年 11 月 21 日发布),如果你问的是最新稳定版,那就是 PHP 8.4。
如果你指的是正在开发中的 PHP 8.5(预计 2025 年 11 月发布),目前还处于早期特性讨论阶段。
以下是 PHP 8.4 带来的核心新功能、性能改进和弃用项:
核心新特性
- 属性挂钩(Property Hooks):这是 PHP 8.4 最重大的语法革新,它允许你在声明属性时直接定义
get和set逻辑,无需再写样板式的getter和setter方法。class User { public string $name { get => strtoupper($this->name); set => trim($value); } } - 不对称可见性(Asymmetric Visibility):允许属性的读取和写入权限不同,你可以让属性的读取是
public,但写入是protected。class Post { public private(set) int $views = 0; // 外部可读,但只能内部修改 } - 新的
#[\Deprecated]属性:你现在可以在类、方法、函数或常量上标记#[Deprecated],IDE 和静态分析工具会自动提示弃用警告。 - 实例化时不加括号(New without parentheses):允许链式调用时省略构造函数的括号(如果构造函数无参数)。
$foo = new Foo()->method(); // 以前需要 new Foo()->method();
性能与 JIT 改进
- JIT(即时编译)重写:PHP 8.4 对 JIT 进行了大幅重写(基于新的 IR 框架),减少了内存占用,并提升了对 CPU 密集型任务的性能(官方宣称部分基准测试提升 15% 以上)。
- 数组排序优化:改进了
sort()、usort()等数组排序函数的底层算法,排序速度更快。
语言与语法改进
- 新的
#[Deprecated]属性(已在上文提及)。 exit和die作为函数:exit和die是真正的函数,可以像exit()一样使用,并且可以被安全地引用(例如作为回调函数)。- 新增
mb_trim()等多字节字符串函数:填补了多字节字符串处理中trim、ltrim、rtrim的空白。
类与接口的新增
#[\Override]属性现已被广泛支持:虽然不是 8.4 新增,但在 8.4 中该属性的使用更加完善。- 新增
Dom类:PHP 8.4 引入了新的符合规范的 DOM 类(Dom\HTMLDocument和Dom\XMLDocument),它们遵循 WHATWG 规范,比旧的DOMDocument更现代、更安全(修复了安全漏洞),注意旧的DOMDocument并未移除,但新代码建议使用新类。
其他重要改进
request_parse_body()函数:这是一个新的函数,用于在非标准 HTTP 方法(如PATCH)中安全地解析请求体($_POST),解决了php://input解析的痛点。lazy objects支持:引入了对惰性对象(Lazy Objects)的支持,允许延迟初始化对象属性,这在依赖注入容器和 ORM 中非常有用。
弃用(Deprecations)提醒
PHP 8.4 也对一些旧特性发出了弃用警告,如果你升级,需要注意:
- 隐式可空参数类型:
function foo(string $param = null)这种写法被弃用,应显式写为?string。 E_STRICT常量:被弃用。- 在
foreach中使用非变量:某些特定用法会产生弃用警告。
如何查看最新消息?
PHP 官方通常每年 11 月发布一个大版本,如果你想看最新最全的更新,可以访问:
- PHP 官方 RFC 页面:查看正在投票或已批准的新特性提案。
- PHP 8.5 语法/特性计划:8.5 正处于 RFC 投票阶段,你可以关注像“pipe operator”、“enum case reflection”等热门提案。
如果你正在考虑升级,PHP 8.4 的最大亮点是属性挂钩(减少样板代码)和显著的性能提升,如果你目前在使用 8.0 或 8.1,升级到 8.4 的收益会非常明显。