PHP 8.2.0正式发布,支持分离范式类型,引入新的随机数扩展

2022-12-25 0 644

PHP 8.2.0正式发布,支持分离范式类型,引入新的随机数扩展

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); // 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 中字串变量导出的新用法》https://phpreturn.com/index/a628de16a2adf8.html

安装和升级到 PHP8.2

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

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

Ubuntu/Debian: PHP 8.2 可用 ondrej/phpPPA

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

PHP 8.2.0正式发布,支持分离范式类型,引入新的随机数扩展PHP 8.2.0正式发布,支持分离范式类型,引入新的随机数扩展

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

原文标题:PHP8.2 正式发布了!

原文地址:https://phpreturn.com/index/a639285aa925ed.html

原文平台:PHP 武器库

举报/反馈

相关文章

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

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