PHP 8.2 发布
系统改进
PHP8.2 解决了 PHP 类型系统的几个缺点和限制,允许 PHP 应用采用更好的类型安全。包括添加了 true 类型,允许 null 和 false 作为独立的类型使用,并支持 DNF 类型(泛型解析)
系统改进 PHP8.2 解决了 PHP 类型系统的几个缺点和限制,允许 PHP 应用采用更好的类型安全。包括添加了 true 类型,允许 null 和 false 作为独立的类型使用,并支持 DNF 类型(泛型解析)。 PHP8.2 支持分离范式类型,现在可以进行组合联合类型和交际类型,这可以定义声明精确而富有表现力的参数、返回值和属性。 php8.2 之前
现在
支持 true 和 false 作为独立的类型,如果 bool 始终相同的时候可以用它来声明。
其中 null 的类型在之前的版本中就可以在联合类型声明中使用,现在可以独立使用了。 只读类 PHP8.1 增加了一个 readonly 的属性声明。一个 readonly 的属性只能设置一次,并且 PHP 会阻止任何作用域内的修改。 PHP8.2 对 readonly 声明进行更进一步的使用,可以将类声明为 readonly。当一个类被声明为 readonly,它的所有属性都会自动声明 readonly。此外,这个类不能使用动态属性,以确保所有的属性都是有定义的。
所有的属性都会自动声明城 readonly。 新的随机数扩展 在 PHP 的历史发展中,它支持各种各样的随机数生成器,他们有不同程度的性能和不同的用例,并且适合安全应用程序。PHP8.2 更进一步,将所有与随机数相关的功能重构为一个名为 random 的扩展。新的扩展不会破坏任何现有的接口使用PHP数据类型,因此现有的 rand,mt_rand 函数将继续工作,不需要任何更改。它还提供了一个对象接口,用可插拔的体系生成随机数,因此很容易模拟随机数生成器并提供新的随机数生成器,从而市 PHP 应用程序安全且易于测试。 trait 常量 在 PHP8.2 中,可以在 trait 中声明常量。trait 不能直接访问,但当类使用 trait 时,这些常量就变成了类的常量。
敏感参数支持 PHP8.2 新增了一个内置参数属性命名:#[\SensitiveParameter]。能够使 PHP 在堆栈跟踪和错误消息中隐藏掉实际值。 我们经常会在参数或属性中定义密码、秘钥或其他敏感信息。当 PHP 发生错误时,这些值会被记录下来。显示到屏幕上或者记录到日志中。这样人们就能通过这些方式得到敏感数据。 比如下面的例子:
打印的内容如下:
hunter2 不会被打印出来。 新的函数和类 解析 INI 数量值:ini_parse_quantity 将 PHP ini 值识别成字节。
curl 维持活动:curl_upkeep 在 PHP8.2 中,curl 扩展会触发底层 curl 库来运行必要任务,以保持 curl 连接存活。最常见的用法就是定期调用 curl_upkeep 来实现 http 持久连接(keep-alive)。 检索密码长度:openssl_cipher_key_length 在 PHP8.2 OpenSSL 中,有一个名为 openssl_cipher_key_length 的函数,能够接受任何支持的密码所需的秘钥长度,在之前需要硬编码才能实现:
重置记录的峰值内存使用量:memory_reset_peak_usage 这对于多次调用或迭代调用时很有用。 PHP8.2 中的弃用 PHP8.2 也带来了相当一部分的弃用。当语法、函数和特性被弃用时,PHP 会发起一个弃用通知,该通知不应该中断 PHP 程序,但会被记录到错误日志中。 注意:PHP8.0 以后,PHP 的默认错误报告行为是 E_ALL已弃用动态属性 PHP8.2 中最值得注意的弃用之一就是弃用动态属性。如果一个类属性没有声明就被调用或赋值,就会退出程序。
这个可能会影响到很多的的 PHP 遗留程序,推荐的修复方法是在类型中声明属性。 对此也有例外用法,比如 stdClass 和它的子类将正常使用,__get 和__set 魔术方法将正常使用,或者声明 #AllowDynamicProperties。 其他一些弃用可以关注本站其他文章: 《PHP8.2 中字串变量解析的新用法》 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |