PHP8.1正式发布,带来多项创新,例如枚举、Fibers和性能改进。PHP是一种用于开发Web应用程序的服务器端脚本语言。据W3Techs称,78.2%的网站使用PHP并使用已知的服务器端编程语言。换句话说,您在Internet上访问的每10个网站中,几乎有8个以某种方式使用PHP。在宣布成立PHP基金会几天后,随着最新PHP8.1更新的发布,该语言继续发展。这个新版本于2021年11月25日发布,包含许多新功能,包括枚举、只读属性、First-class可调用语法、Fibers、交集类型、性能改进等。让我们快速了解一些新功能、性能调整以及您应该迁移到PHP8.1的其他原因。PHP8.1亮点对于每一个新的PHP版本,我们通常都可以期待小的性能提升,这次似乎也不例外。这个最新版本还提供了帮助开发人员编写更简洁代码的功能。枚举(Enumerations)PHP8.1引入了一种新的数据类型,称为Enums。它基本上是一组在实体中声明的预定义值。枚举是应用程序建模中的重要工具,因为它们允许您定义自己的允许状态的微观世界。现在您可能已经以某种方式在代码中使用枚举,但现在PHP8.1将原生支持枚举。这对每个人来说都是个好消息。在其最基本的形式中,枚举看起来像这样:enumAnimal{caseDogs;caseCats;caseBirds;caseReptiles;}与其他语言类似,这是一种允许预定义值的枚举类型。上面的示例创建了一个名为Animal的新枚举类型,它采用以下四个值:Animal::Dogs、Animal::Cats、Animal::Birds和Animal::Reptiles。可以将变量分配给这些值。枚举的优点是它们表示一组常量值,但最重要的是,这些值是可以键入的。Fibers到目前为止,PHP仅用于编写同步代码。PHP8.1带有一个令人兴奋的新功能,用于将异步代码构建到语言纤维中。引入光纤是为了消除异步和同步功能之间的区别。您可以使用Fibers开发全栈、可中断的PHP函数,然后您可以使用这些函数在PHP中实现协作式多任务处理。Fiber暂停整个调用堆栈,因此函数的直接调用者不需要更改他们调用函数的方式。使用Fiber::suspend().$fiber=newFiber(function():void{$value=Fiber::suspend('fiber');echo"Valueusedtoresumefiber:",$value,"\n";});$value=$fiber->start();echo"Valuefromfibersuspending:",$value,"\n";$fiber->resume('test');outputValuefromfibersuspending:fiberValueusedtoresumefiber:testFirst-class可调用语法First-Class可调用对象是一种引用闭包和函数的新方法。虽然以前您已经可以通过将它们的名称用作字符串或通过创建可调用对象数组来引用它们,但现在有了从任何给定函数创建可调用对象的正确语法,因此您可以稍后调用它。$fn=Closure::fromCallable('strlen');$fn=strlen(...);$fn=Closure::fromCallable([$this,'method']);$fn=$this->method(...)$fn=Closure::fromCallable([Foo::class,'method']);$fn=Foo::method(...);在这个例子中,每对表达式都是等价的。strlen(...)语法创建一个对strlen()函数的Closure引用,等等。PHP8.1中的其他改进数组和打包现在支持字符串键,类常量可以设置为最终的,这样它们就不会被子类覆盖。此外,还有一个新的array_is_list()函数可以确定一个数组是否只有从0开始并以1递增的数字键,但它是否是一个实际的列表。PHP8.1引入了一种新的八进制整数书写方式,我们现在也有了纯交集类型。这与允许任何声明类型的联合类型相反。如果您经常在代码中使用接口,则PureIntersection类型很有用。最后一种是never类型。它是一个返回类型,意味着函数永远不会返回。这意味着它要么退出,要么总是抛出异常。functionredirect(string$url):never{header('Location:'.$url);exit();}永不返回类型的目标是指示并强制执行一个函数,以防止其余被调用代码的执行。最后但同样重要的是,PHP8.1图像处理和GD扩展增加了对AVIF图像的支持。与JPEG、PNG和WebP相比,AVIF图像可以显着减小文件大小,目前已被GoogleChrome和MozillaFirefox支持。PHP8.1性能改进随着每个PHP版本不断提高性能,PHP8.1为实际应用程序带来了巨大的性能改进。事实上,Symfony演示应用程序在PHP8.1上的运行速度比PHP7.4快约23%,而Laravel在PHP8.1上的运行速度比PHP7.4快约21.5%。这是PHP8.1中实施的两项新技术以及许多小的性能修复和调整的结果。因此,当然,很高兴看到PHP的性能如何随着每次新更新而不断提高。
