PHP 8.4 发布:主要新特性与改进概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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 上的新闻——我们将继续解析新版本的技术细节,并编写迁移指南。

推荐库