性能改进,相对于php8.0有巨幅的提升,具体可以参考如下图文,对于phper来说可谓是一件乐事
结果(相对于 PHP 8.0):
Symfony Demo 有 23.0% 的提升
WordPress 有 3.5% 的提升
PHP 8.1 中与性能相关的特性:
ARM64 的 JIT 后端 (AArch64)
继承缓存(避免在每个请求中重新链接类)
快速解析类名(避免小写和哈希查找)
timelib 和 ext/date 性能改进
SPL 文件系统迭代器改进
serialize/unserialize 优化
一些内部函数优化(get_declared_classes()、explode()、strtr()、strnatcmp() 和 dechex())
JIT 的改进和修复
新的类、接口和函数
#[ReturnTypeWillChange] 属性。
fsync 和 fdatasync 函数。
array_is_list 函数。
Sodium XChaCha20 函数。
弃用和向后不兼容
向非空值的内部函数参数传递空值的做法已被弃用。
PHP 内置类方法中的暂定返回类型
Serializable 接口已弃用。
html_entity_encode/html_entity_decode 函数默认处理单引号和用 Unicode 替换字符来替换无效字符。
$GLOBALS 变量限制。
MySQLi:默认错误模式设置为异常。
隐式不兼容的 float 到 int 转换已被弃用。
finfo 扩展:file_info 资源迁移到现有的 finfo 对象。
IMAP:imap 资源迁移到 IMAP\Connection 类对象。
FTP 扩展:连接资源迁移到 FTP\Connection 类对象。
GD 扩展:字体标识符迁移到 GdFont 类对象。
LDAP:资源类型迁移到 LDAP\Connection、LDAP\Result 和 LDAP\ResultEntry 对象。
PostgreSQL:资源类型迁移到 PgSql\Connection、PgSql\Result 和 PgSql\Lob 对象。
Pspell:pspell 和 pspell config 资源类型迁移到 PSpell\Dictionary、PSpell\Config 类对象。
枚举
//php<8.1 class Status { const DRAFT = 'draft'; const PUBLISHED = 'published'; const ARCHIVED = 'archived'; } function acceptStatus(string $status) {...} //php8.1 enum Status { case Draft; case Published; case Archived; } function acceptStatus(Status $status) {...}
评论