PHP 8.2 与 8.1 的主要区别
PHP 8.2 是 PHP 8.1 的后继版本,于 2022 年 12 月发布。它带来了多项改进和新特性,同时保持了与 PHP 8.1 的高度兼容性。以下是两个版本之间的主要区别:
新特性与改进
-
只读类 (Readonly Classes)
PHP 8.2 引入了只读类的概念,通过声明readonly
修饰符可以使类的所有属性自动成为只读属性,简化了代码编写。 -
独立类型 (Disjunctive Normal Form Types)
新增了对DNF
类型的支持,允许联合类型和交集类型的组合,提供更灵活的类型系统。 -
新的随机数扩展 (Random Extension)
引入了全新的Random
扩展,提供了更强大且可预测的随机数生成功能。 -
敏感参数标记 (Sensitive Parameter)
新增#[\SensitiveParameter]
属性,用于标记敏感参数(如密码),在错误堆栈跟踪中会自动隐藏其值。
弃用与向后不兼容变更
-
动态属性的弃用
PHP 8.2 开始弃用动态属性的创建(除非类使用#[\AllowDynamicProperties]
标记),这是向更严格代码规范迈进的一步。 -
部分字符串函数变更
一些字符串函数如strtolower()
现在会正确处理 UTF-8 编码,行为与之前版本有所不同。 -
MySQLi 错误模式变更
MySQLi 默认错误模式从MYSQLI_REPORT_OFF
改为MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT
。
性能优化
PHP 8.2 在性能方面做了进一步优化,包括:
- JIT 编译器的改进
- 内存使用的优化
- 特定函数和操作的执行速度提升
其他改进
- 新的常量
true
、false
和null
作为独立类型 mysqli_execute_query()
函数 简化了预处理语句的执行curl_upkeep()
函数 用于维持 CURL 连接活跃状态
总体而言,PHP 8.2 在保持稳定性的同时,通过引入新特性和改进现有功能,进一步提升了开发体验和性能。对于大多数应用来说,从 8.1 升级到 8.2 是一个相对平滑的过程。
这一切,似未曾拥有