PHP8.2发布了

2022-12-21 0 998

PHP8.2发布了

PHP8.2是PHP词汇现代民主化中的两个关键的里程碑式。除令人激动地新优点和改良以外,PHP8.2还精简了词汇,中止了对静态类优点的全力支持,在碰到这类非最优化的ini实用性时收到警示,并复原了许多负面影响PHP字符串次序和这类类别的字符串切换/代码操作方式的遗留下来PHP犯罪行为。

控制系统改良

PHP8.2化解了PHP类别控制系统的两个优点和管制,容许PHP应用领域选用更快的类别安全可靠。主要包括加进了true类别,容许null和false做为分立的类别选用,并全力支持DNF类别(C#导出)。

PHP8.2全力支持分立本体论类别,那时能展开女团联手类别和言谈类别,这能表述新闻稿准确而富于感染力的模块、codice和优点。

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; } }

全力支持true和false做为分立的类别,假如bool仍旧完全相同的这时候能用它来新闻稿。

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

当中null的类别在以后的版中就能在联手类别新闻稿中选用,那时能分立选用了。

只读类

PHP8.1增加了两个readonly的优点新闻稿。两个readonly的优点只能设置一次,并且PHP会阻止任何作用域内的修改。

PHP8.2对readonly新闻稿展开更进一步的选用,能将类新闻稿为readonly。当两个类被新闻稿为readonly,它的所有优点都会自动新闻稿readonly。此外,这个类不能选用静态优点,以确保所有的优点都是有表述的。

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

所有的优点都会自动新闻稿城readonly。

新的随机数扩展

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

trait常量

在PHP8.2中,能在trait中新闻稿常量。trait不能直接访问,但当类选用trait时,这些常量就变成了类的常量。

trait Foo { public const CONSTANT = 1; } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1 var_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”); // 32 openssl_cipher_key_length(“AES-128-GCM”); // 16 openssl_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中字串变量导出的新用法》https://phpreturn.com/index/a628de16a2adf8.html安装和升级到PHP8.2

PHP 8.2那时能在所有常规源代码中下载/安装:

Windows:编译后的二进制文件可在windows.php.netUbuntu/Debian: PHP 8.2可

PHP8.2发布了

PHP8.2发布了

更详细的变动,作者将持续跟进正式发布。欢迎关注收藏。

原文标题:PHP8.2正式发布了! 原文地址:https://phpreturn.com/index/a639285aa925ed.html 原文平台:PHP武器库 版权新闻稿:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站容许任何形式的转载/引用文章,但必须同时注明出处。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务