PHP8.1的新特性与改进


性能改进,相对于php8.0有巨幅的提升,具体可以参考如下图文,对于phper来说可谓是一件乐事

image.png

结果(相对于 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) {...}


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论