您现在的位置是:亿华云 > 数据库
PHP 8.1 发布,带来诸多创新
亿华云2025-10-03 20:26:06【数据库】4人已围观
简介PHP 8.1 正式发布,带来了诸多创新,例如枚举、Fibers和性能改进。PHP 是一种服务器端脚本语言,用于开发 Web 应用程序。根据 W3Techs 的数据,78.2% 的网站使用 PHP 并
PHP 8.1 正式发布,布带带来了诸多创新,诸多例如枚举、创新Fibers和性能改进。布带
PHP 是诸多一种服务器端脚本语言,用于开发 Web 应用程序。创新根据 W3Techs 的布带数据,78.2% 的诸多网站使用 PHP 并使用已知的服务器端编程语言。换句话说,创新您在 Internet 上访问的布带每 10 个网站中几乎有 8 个以某种方式使用 PHP。
在宣布成立PHP 基金会几天后,诸多该语言通过发布最新的创新 PHP 8.1 更新而不断发展。这个新版本于 2021 年 11 月 25 日发布,布带包含许多新功能,诸多包括枚举、创新只读属性、First-class 可调用语法、Fibers、交集类型、性能改进等。
让我们快速浏览一下您应该迁移到 PHP 8.1 的一些新功能、性能调整和其他原因。
PHP 8.1 亮点
对于每一个新的 PHP 版本,我们通常可以期待性能的小幅提升,这次似乎也不例外。高防服务器这个最新版本还提供了帮助开发人员编写更简洁代码的功能。
枚举(Enumerations)
PHP 8.1 引入了一种名为Enums的新数据类型。它基本上是在一个实体中声明的一组预定义值。枚举是应用程序建模中的重要工具,因为它允许您定义自己的允许状态的微观世界。
现在您可能已经在代码中以一种或另一种方式使用了枚举,但现在 PHP 8.1 将原生支持枚举。这对每个人来说都是个好消息。在最基本的形式中,枚举看起来像这样:
enum Animal { case Dogs; case Cats; case Birds; case Reptiles; }与其他语言类似,这是一种允许预定义值的枚举类型。上面的示例创建一个新的名为枚举类型Animal,它采用下列四个值:Animal::Dogs,Animal::Cats,Animal::Birds和Animal::Reptiles。可以将变量分配给这些值。
Enums 的优点是它们代表了一组常量值,源码库但最重要的是,这些值可以被键入。
Fibers
到目前为止,PHP 仅用于编写同步代码。PHP 8.1 附带了一项激动人心的新功能,用于将异步代码构建到语言Fibers 中。
Fiber的引入旨在消除异步和同步函数之间的区别。
您可以使用 Fibers 开发全栈、可中断的 PHP 函数,然后您可以使用这些函数在 PHP 中实现协作多任务处理。
Fiber 会暂停整个调用堆栈,因此函数的直接调用者无需更改其调用函数的方式。执行可以在调用堆栈中的任何地方使用 Fiber::suspend().
$fiber = new Fiber(function (): void { $value = Fiber::suspend(fiber); echo "Value used to resume fiber: ", $value, "\n"; }); $value = $fiber->start(); echo "Value from fiber suspending: ", $value, "\n"; $fiber->resume(test);输出
Value from fiber suspending: fiber Value used to resume fiber: testFirst-class 可调用语法
First-Class callables是一种引用闭包和函数的新方法。虽然以前您已经可以通过将它们的名称用作字符串或通过创建可调用数组来引用它们,但现在有这种正确的语法可以从任何给定函数创建可调用对象,以便您以后可以调用它。
$fn = Closure::fromCallable(strlen); $fn = strlen(...); $fn = Closure::fromCallable([$this, method]); $fn = $this->method(...) $fn = Closure::fromCallable([Foo::class, method]); $fn = Foo::method(...);在这个例子中,每对表达式都是等价的。亿华云计算该strlen(...)语法创建一个Closure引用的strlen()功能,等等。
PHP 8.1 中的其他改进
数组和打包现在支持字符串键,并且可以创建类常量,final这样它们就不会被子类覆盖。此外,还有一个新array_is_list()函数可以确定数组是否只有从 0 开始并以 1 递增的数字键,但它是否是实际列表。
PHP 8.1 引入了一种写八进制整数的新方法,我们现在也有 Pure Intersection 类型。这与联合类型相反,它允许任何声明的类型。如果您经常在代码中使用接口,Pure Intersection 类型很有用。
最后是never类型。它是一种返回类型,表示函数永远不会返回。这意味着它将退出或始终抛出异常。
function redirect(string $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 中实现的两项新技术以及许多小的性能修复和调整的结果。所以,当然,很高兴看到 PHP 的性能如何随着每个新的更新而不断提高。
很赞哦!(222)
相关文章
- cm域名有什么独特之处?新人要了解cm域名哪些?
- 数据库的血泪史,一学就会,从安装到放弃MySQL 数据库安装教程
- Postgre SQL数据库实现有记录则更新无记录就新增
- 分分钟致命的MySQL安全盲区
- 其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
- 高并发之存储篇:关注下索引原理和优化吧!躲得过实践,躲不过面试官!
- GMP 库开发者发文批评 Risc V “性能太拉跨”
- 日常Bug排查-系统失去响应-Redis使用不当
- 新手可以注册cc域名吗?cc域名有什么特点?
- 面试必问 | 聊聊 MyBatis 执行流程?