Code前端首页关于Code前端联系我们

PHP 8.1 服务器端脚本语言发布,枚举、线程、性能提升

terry 2年前 (2023-09-25) 阅读数 49 #后端开发

PHP 8.1 正式发布,带来枚举、线程、性能提升等诸多创新。

PHP 是一种用于 Web 应用程序开发的服务器端脚本语言。据 W3Techs 统计,78.2% 的网站使用 PHP,并使用一种知名的服务器端编程语言。换句话说,您在 Internet 上访问的每 10 个网站中几乎有 8 个以某种方式使用 PHP。

PHP 基金会发布公告几天后,随着最新 PHP 更新 8.1 的发布,该语言继续发展。该新版本于 2021 年 11 月 25 日发布,包含许多新功能,包括枚举、只读属性、一流的可调用语法、线程、联结类型、性能改进等。

让我们快速浏览一下一些新功能、性能改进以及您应该升级到 PHP 8.1 的其他原因。

PHP 8.1 亮点

对于 PHP 的每个新版本,我们通常都可以期待小的性能改进,这个似乎也不例外。这个最新版本还提供了帮助开发人员编写更清晰的代码的功能。

枚举

PHP 8.1 引入了一种名为 Enums 的新数据类型。它基本上是在实体中声明的一组预定义值。枚举是应用程序建模中的重要工具,因为它们允许您定义自己的允许状态的微观世界。

现在您可以以某种方式在代码中使用枚举,但现在 PHP 8.1 将原生支持枚举。这对每个人来说都是个好消息。在最基本的形式中,该列表如下所示:

enum Animal {

case Dogs;

猫的情况;

鸟盒;

爬行动物的情况;

}

与其他语言一样,这是一种允许预定义值的枚举类型。上面的示例创建了一个名为 Animal 的新枚举类型,它具有以下四个值: Animal::Dogs 、 Animal::Cats 、 Animal::Birds 和 Animal::Reptiles 。可以将变量分配给这些值。

枚举的优点是它们代表一组常量值,但最重要的是,这些值可以键入。

线程

到目前为止,PHP 仅用于编写同步代码。 PHP 8.1 附带了一项令人兴奋的新功能,用于在 Fibres 中创建异步代码。

引入线程是为了消除异步函数和同步函数之间的差异。

您可以使用 Fibers 开发全栈、可中断的 PHP 函数,然后使用这些函数在 PHP 中实现协作式多任务处理。

Fibre 会暂停整个调用堆栈,因此直接函数调用者不必更改函数的调用方式。可以使用 Fiber::suspend 在调用堆栈中的任何位置执行。

$thread = new Thread(function : void {

$value = Fiber::suspend('thread');

echo "The value 使用 se 恢复线程: ", $value, "\n";

});

$value = $optical->start;

echo "挂起线程的值: ", $value, "\ n";

$fibre->resume('test');

输出

挂起线程的值:fibre

用于恢复线程的值:test

一流的可调用语法 一流的可选值代表了一种引用闭包和函数的新方法。之前您可以通过使用它们的名称作为字符串或创建可调用数组来引用它们,但现在有一个正确的语法可以从任何给定函数创建可调用对象,以便您稍后可以调用它。

$fn = 闭包::fromCallable('strlen');

$fn = strlen(...);

$fn = 闭包::fromCallable([$this, '方法']);

$fn = $this->method(...)

$fn = Closure::fromCallable([Foo::class, 'method']);

$fn = Foo::method( ...);

在此示例中,每对表达式都是等效的。 strlen(...) 语法创建一个引用 strlen 函数等的闭包。

PHP 8.1 中的其他改进

数组和包现在支持字符串键,并且可以将类常量设为最终值,这样它们就不会被子类覆盖。此外,还有一个新的 array_is_list 函数,用于确定数组是否只有从 0 开始并以 1 递增的数字键,但是否是一个真正的列表。

PHP 8.1 引入了一种书写整数八进制数的新方法,现在我们还拥有纯交集类型。这与统一类型不同,统一类型允许声明任何类型。如果您经常在代码中使用接口,则纯交集类型非常有用。

最后一种类型是“从不”。它是一个返回类型,这意味着该函数永远不会返回。这意味着它将终止或始终抛出异常。

函数重定向 (字符串 $url): never {

header('Location: ' . $url);

exit;

}

never 返回类型的目的是指定和强制执行一个函数,该函数将阻止其余被调用代码的执行。

最后但并非最不重要的一点是,PHP 8.1 图像处理和 GD 扩展添加了对 AVIF 图像的支持。与 JPEG、PNG 和 WebP 相比,AVIF 图像可以显着减小文件大小,目前 Google Chrome 和 Mozilla Firefox 支持。

PHP 8.1 性能改进

PHP 每个版本的性能都在不断改进,PHP 8.1 为实际应用程序带来了巨大的性能改进。

事实上,PHP 8.1 上的 Symfony 演示应用程序比 PHP 7.4 快约 23%,Laravel 在 PHP 8.1 上的运行速度比 PHP 7.4 快约 21.5%。

服务器端脚本语言PHP 8.1 发布,枚举、Fibers和性能改进

这是 PHP 8.1 中实现的两项新技术以及许多小修复和性能改进的结果。因此,当然,很高兴看到 PHP 的性能在每次新更新中不断提高。

来自:Linux爱好者

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门