iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP8.2有哪些改进
  • 557
分享到

PHP8.2有哪些改进

2023-07-04 18:07:09 557人浏览 薄情痞子
摘要

这篇文章主要介绍了PHP8.2有哪些改进的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php8.2有哪些改进文章都会有所收获,下面我们一起来看看吧。PHP8.2是PHP语言现代化进程中的一个重要的里程碑。除了令

这篇文章主要介绍了PHP8.2有哪些改进的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php8.2有哪些改进文章都会有所收获,下面我们一起来看看吧。

PHP8.2是PHP语言现代化进程中的一个重要的里程碑。除了令人兴奋地新特性和改进之外,PHP8.2还简化了语言,取消了对动态类属性的支持,在遇到某些非最优的ini配置时发出警告,并修复了一些影响PHP数组排序和某些类型的字符串转换/编码操作的遗留PHP行为。

系统改进

PHP8.2解决了PHP类型系统的几个缺点和限制,允许PHP应用采用更好的类型安全。包括添加了true类型,允许null和false作为独立的类型使用,并支持DNF类型(泛型解析)。

PHP8.2支持分离范式类型,现在可以进行组合联合类型和交际类型,这可以定义声明精确而富有表现力的参数、返回值和属性。

php8.2之前

class Foo {    public function bar(mixed $entity) {        if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) {            return $entity;        }        throw new Exception('Invalid entity');    }}

现在

class Foo {    public function bar((A&B)|null $entity) {        return $entity;    }}

支持truefalse作为独立的类型,如果bool始终相同的时候可以用它来声明。

function alwaysReturnsFalse(): false {}function alwaysReturnsNull(): null {}function alwaysReturnsTrue(): true {}

其中null的类型在之前的版本中就可以在联合类型声明中使用,现在可以独立使用了。

只读类

PHP8.1增加了一个readonly的属性声明。一个readonly的属性只能设置一次,并且PHP会阻止任何作用域内的修改。

PHP8.2readonly声明进行更进一步的使用,可以将类声明为readonly。当一个类被声明为readonly,它的所有属性都会自动声明readonly。此外,这个类不能使用动态属性,以确保所有的属性都是有定义的。

readonly class User {    public string $username;    public string $uid;}

所有的属性都会自动声明城readonly

新的随机数扩展

PHP的历史发展中,它支持各种各样的随机数生成器,他们有不同程度的性能和不同的用例,并且适合安全应用程序。PHP8.2更进一步,将所有与随机数相关的功能重构为一个名为random的扩展。新的扩展不会破坏任何现有的接口使用,因此现有的randmt_rand函数将继续工作,不需要任何更改。它还提供了一个对象接口,用可插拔的体系生成随机数,因此很容易模拟随机数生成器并提供新的随机数生成器,从而市PHP应用程序安全且易于测试

trait常量

PHP8.2中,可以在trait中声明常量。trait不能直接访问,但当类使用trait时,这些常量就变成了类的常量。

trait Foo{    public const CONSTANT = 1;}class Bar{    use Foo;}var_dump(Bar::CONSTANT); // 1var_dump(Foo::CONSTANT); // Error

敏感参数支持

PHP8.2新增了一个内置参数属性命名:#[\SensitiveParameter]。能够使PHP在堆栈跟踪和错误消息中隐藏掉实际值。

我们经常会在参数或属性中定义密码、秘钥或其他敏感信息。当PHP发生错误时,这些值会被记录下来。显示到屏幕上或者记录到日志中。这样人们就能通过这些方式得到敏感数据。

比如下面的例子:

function passWordHash(#[\SensitiveParameter] string $password)  {       debug_print_backtrace(); } passwordHash('hunter2');

打印的内容如下:

array(1) {[0]=> array(4) {  ["file"]=> string(38) "..."  ["line"]=> int(9)  ["function"]=> string(3) "foo"  ["args"]=> array(1) {     // [0]=> string(38) "hunter2" 这一行不会被打印出来     [0]=> object(SensitiveParameterValue)#1 (0) {}  } }}

hunter2不会被打印出来。

新的函数和类

解析INI数量值:ini_parse_quantity

PHP ini值识别成字节。

ini_parse_quantity('256M'); // 268435456

curl维持活动:curl_upkeep

PHP8.2中,curl扩展会触发底层curl库来运行必要任务,以保持curl连接存活。最常见的用法就是定期调用curl_upkeep来实现Http持久连接(keep-alive

检索密码长度:openssl_cipher_key_length

PHP8.2 OpenSSL中,有一个名为openssl_cipher_key_length的函数,能够接受任何支持的密码所需的秘钥长度,在之前需要硬编码才能实现:

openssl_cipher_key_length("CHACHA20-POLY1305"); // 32openssl_cipher_key_length("AES-128-GCM"); // 16openssl_cipher_key_length("AES-256-GCM"); // 32

重置记录的峰值内存使用量:memory_reset_peak_usage

这对于多次调用或迭代调用时很有用。

PHP8.2中的弃用

PHP8.2也带来了相当一部分的弃用。当语法、函数和特性被弃用时,PHP会发起一个弃用通知,该通知不应该中断PHP程序,但会被记录到错误日志中。

注意:PHP8.0以后,PHP的默认错误报告行为是E_ALL

已弃用动态属性

PHP8.2中最值得注意的弃用之一就是弃用动态属性。如果一个类属性没有声明就被调用或赋值,就会退出程序。

class User {    public int $uid;}$user = new User();$user->name = 'Foo';

这个可能会影响到很多的的PHP遗留程序,推荐的修复方法是在类型中声明属性。

对此也有例外用法,比如stdClass和它的子类将正常使用,__get和__set魔术方法将正常使用,或者声明#AllowDynamicProperties。

安装和升级到PHP8.2

PHP 8.2现在可以在所有常规源代码中下载/安装:

  • windows:编译后的二进制文件可在windows.php.net

  • ubuntu/Debian: PHP 8.2可用ondrej/phpPPA

  • Fedora/RHEL/Centos/Alma/Rocky:可以在Remi的源中获取

  • Mac OS: PHP 8.2可以通过Homebrew安装shivammathur/homebrew-php利用.

  • Docker:可以通过8.2*版本获取PHP 8.2

PHP8.2有哪些改进

PHP8.2有哪些改进

关于“PHP8.2有哪些改进”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“PHP8.2有哪些改进”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: PHP8.2有哪些改进

本文链接: https://www.lsjlt.com/news/346861.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP8.2有哪些改进
    这篇文章主要介绍了PHP8.2有哪些改进的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP8.2有哪些改进文章都会有所收获,下面我们一起来看看吧。PHP8.2是PHP语言现代化进程中的一个重要的里程碑。除了令...
    99+
    2023-07-04
  • PHP8.2有哪些新特性
    这篇“PHP8.2有哪些新特性”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP8.2有哪些新特性”文章吧。null和fa...
    99+
    2023-07-02
  • Wabacus 3.4有哪些改进
    这篇文章主要介绍了Wabacus 3.4有哪些改进,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。J2EE 快速开发框架 Wabacus 3.4 版已发布,通过该框架,开发者的...
    99+
    2023-06-17
  • Disruptor 2.8有哪些改进
    这篇文章主要介绍Disruptor 2.8有哪些改进,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Disruptor 2.8 发布了,该版本包含如下改进:Create new MultithreadClaimStra...
    99+
    2023-06-17
  • Apache Flink 1.6.0有哪些改进
    小编给大家分享一下Apache Flink 1.6.0有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Apache Flink 1.6.0 重要更新主要包...
    99+
    2023-06-02
  • Fedora13桌面有哪些改进
    本篇内容主要讲解“Fedora13桌面有哪些改进”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Fedora13桌面有哪些改进”吧!以下介绍Fedora 13在桌面使用上的一些新增特性:Packa...
    99+
    2023-06-16
  • Spring Framework 3.0.7有哪些改进
    小编给大家分享一下Spring Framework 3.0.7有哪些改进,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Spring Framework 3.0.7 发布了,可通过 Maven 中心 SpringSource...
    99+
    2023-06-17
  • Ubuntu 14.04 LTS有哪些改进
    这篇文章主要为大家展示了“Ubuntu 14.04 LTS有哪些改进”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ubuntu 14.04 LTS有哪些改进”这篇文章吧。#1:更小的 Unity...
    99+
    2023-06-16
  • Play1.2.4发布有哪些改进
    小编给大家分享一下Play1.2.4发布有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Play1.2.4发布。添加了对java7的支持。更好的数据绑定实...
    99+
    2023-06-17
  • Visual Studio 2010有哪些改进
    这篇文章给大家分享的是有关Visual Studio 2010有哪些改进的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Visual Studio 2010开发代号Rosario(阿根廷港市罗萨里奥),除了上述功能...
    99+
    2023-06-17
  • Samba 3.5.8 发布有哪些改进
    这篇文章主要介绍Samba 3.5.8 发布有哪些改进,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Samba 3.5.8 发布,更新如下:该版本修复了当没有DC生效时,Winbind崩溃问题。域成员查找的bug修复...
    99+
    2023-06-16
  • DynamicReports 2.3.3发布有哪些改进
    小编给大家分享一下DynamicReports 2.3.3发布有哪些改进,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!DynamicReports 2.3.3 发布了,该版本增加对 candlestick 和 highlo...
    99+
    2023-06-17
  • Qomo 1.2发布有哪些改进
    这篇文章给大家分享的是有关Qomo 1.2发布有哪些改进的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。此次发布的Qomo 1.2版本为2月一次的Snapshot版本,在Qomo 1.1的基础上修正了一些Bug,修...
    99+
    2023-06-16
  • PostgreSQL 12中的改进有哪些
    本篇内容主要讲解“PostgreSQL 12中的改进有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL 12中的改进有哪些”吧!“Auto...
    99+
    2024-04-02
  • Pidgin 2.5.5发布有哪些改进
    这篇文章主要介绍Pidgin 2.5.5发布有哪些改进,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!支持多协议的即时通讯客户端 Pidgin 在几天前发布了新的 2.5.5 版本。Pidgin 2.5.5 改进了 l...
    99+
    2023-06-17
  • KDE v4.2.2发布有哪些改进
    小编给大家分享一下KDE v4.2.2发布有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!KDE是由德国人Mathias Ettrich于1996年开始的...
    99+
    2023-06-17
  • GTK+ 2.16.0发布有哪些改进
    小编给大家分享一下GTK+ 2.16.0发布有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!跨平台图形用户界面开发工具GTK+发布了2.16.0版。新版在...
    99+
    2023-06-17
  • aMule 2.2.4发布有哪些改进
    这篇文章主要介绍了aMule 2.2.4发布有哪些改进,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。P2P 分享软件 aMule 已发布新的 2.2.4 版。aMule 2....
    99+
    2023-06-17
  • Compiz 0.8.0发布有哪些改进
    这篇文章给大家分享的是有关Compiz 0.8.0发布有哪些改进的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Compiz 的新版本 0.8.0 现已发布。自上一版 0.7.8 推出以来,Compiz 0.8.0...
    99+
    2023-06-17
  • Barista 2.0 alpha2发布有哪些改进
    这篇文章主要为大家展示了“Barista 2.0 alpha2发布有哪些改进”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Barista 2.0 alpha2发布有哪些改进”这篇文章吧。Bari...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作