PHP 8.4 发布:有哪些变化以及对开发者为何重要
PHP 社区迎来了期待已久的版本——PHP 8.4。新版本不仅带来了性能上的针对性改进,还引入了语法层面的根本性变化,这些变化改变了编写代码的方式。我们来解析每个开发者都应该了解的关键新特性。
Property Hooks——属性操作的期待已久革命
最重大的变化之一就是 property hooks(属性钩子)的出现。现在,您可以直接在属性声明中定义 getter 和 setter,而无需创建单独的方法。这使得代码更简洁,并减少了样板代码。
- 内联 Getter 和 Setter:现在可以这样写
public string $name { get => $this->name; set => $this->name = $value; } - 惰性初始化:属性仅在首次访问时计算,从而节省资源。
- 简化 DTO 和值对象:数据传输对象变得更紧凑、更易读。
非对称类型系统 (Asymmetric Visibility)
PHP 8.4 引入了为属性的读取和写入设置不同可见性的能力。例如,您可以将属性设为公开可读,但受保护可写。这解决了长期存在的封装问题,而无需创建冗余的方法。
- 示例:
public private(set) string $title—— 属性可被所有人读取,但只能在类内部修改。 - 更安全:允许更严格地控制数据的可变性。
JIT 编译器的改进
开发团队对 JIT(即时编译器)进行了重大改进。在 PHP 8.4 中,它变得更加可预测和高效,尤其是在长时间运行的进程和 API 负载下。
- 降低了编译开销。
- 改进了对 ARM 架构(Apple Silicon、Raspberry Pi)的支持。
- 在合成测试中性能提升高达 10-15%。
新语法与弃用
此版本还包含语法糖以及对过时功能的移除。
- 改进的
array_find:现在可以写array_find($users, fn($u) => $u->active)—— 查找第一个匹配的元素。 - 移除过时函数:从核心中移除了不带预处理语句的
mysqli以及一系列很少使用的常量。 - 新类型:添加了
true和false作为独立类型,用于严格类型检查。
这对开发者意味着什么?
PHP 8.4 是朝着更现代、更安全代码迈出的一步。Property hooks 和非对称可见性减少了样板代码的数量,而改进的 JIT 使 PHP 在不修改代码的情况下运行得更快。我们建议您现在就开始测试您的项目与新版本的兼容性,特别是如果您使用像 Laravel 或 Symfony 这样的框架——它们已经发布了支持 PHP 8.4 的更新。
请关注 PythonLib 上的新闻——我们将继续解析新版本的技术细节,并编写迁移指南。