本文目录导读:

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 的收益会非常明显。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播