新 PHP 8 中的变化如何影响 WordPress 网站的性能

已发表: 2023-05-04

作为当今最好的编程语言之一,PHP 提供了使 Web 开发和编码更加灵活的新方法。 随着 PHP 8.0 和 PHP 8.1 的推出,PHP 旨在通过提供更好语法、安全性等的新功能带来更多功能。

继续阅读下文,了解更多关于 PHP 8.0 的新功能及其所有特殊功能的信息。 发现过去版本的所有主要更新和改进,以及它们如何影响您的 WordPress 网站。

PHP编码

了解 PHP 8.0 更新

PHP 8.0 更新为全球开发人员和网站带来了重大变化。 它于 2020 年发布,承诺通过创新的征求意见 (RFC) 和其他功能提供新功能和改进,这些功能通常拥有更好的性能、语法、类型安全和错误处理。

虽然性能差异不如 PHP 5 和 PHP 7 之间那么显着,但 PHP 8.0 在每个版本中都提供了稳定的改进。 此外,从 PHP 7 到 PHP 7.4 的大部分更改都已弃用。

PHP 8.0 和 PHP 8.1 都引入了新功能来帮助开发人员更快、更灵活地编写代码。 以下是开发人员应考虑的一些最值得注意的产品。

即时编译

即时或 JIT 编译器是最新 PHP 版本中最好的新特性之一。 通过此 RFC,开发人员可以绕过编译以显着提高性能和内存使用。

PHP 将此 RFC 作为 Opcache 的一个近乎独立的部分来实现。 启用 JIT 后,开发人员可以通过 CPU 运行代码,而不是像 Zend VM 这样的第三方程序,从而提高计算速度。

除了更好的数字编码解决方案外,JIT 还为“典型”PHP Web 应用程序代码提供了潜在的更好性能。 此外,由于 PHP 现在通过 JIT 变得更快,因此有可能将更多代码从 C 移至 PHP。

此外,PHP 8.0 引入了两个 JIT 编译器:tracing 和 1.5。 在这两者中,跟踪 JIT 提供了最大的希望,它在综合基准测试中显示了大约三倍的性能。 同时,1.5 对长时间运行的应用程序有两倍的改进。

命名参数

最新的 PHP 版本提供命名参数来扩展现有的位置参数。 现在,开发人员可以根据参数名称而不是位置将输入数据传递给函数。 因此,命名参数为开发人员提供了各种优势。

一方面,它使他们能够创建更易于理解的代码,因为参数的含义是自我记录的。 它还与顺序无关,这意味着开发人员不必像函数签名那样将参数传递给函数。

此外,开发人员还可以将参数与位置参数结合起来。 另外,它允许他们指定他们想要更改的参数。 这样,如果他们不想覆盖默认值,他们就不必调整参数。

命名参数对于类或类型声明也很方便。

联合类型 2.0

在以前的 PHP 版本中,开发人员只能在文档注释中指定联合类型。 除了“?Type syntax”和“iterable”类,PHP 不提供支持。

PHP 8.0 旨在通过联合类型 2.0 RFC 支持函数签名中的联合类型。 通过这次更新,开发人员将不再依赖内联文档。

此外,在 PHP 中支持联合类型允许开发人员将不同类别的信息从 phpdoc 移动到函数签名中。 正因为如此,它们可以获得各种好处,包括及早发现错误、防止类型信息过时以及在继承过程中检查类型。

空安全运算符

以前,开发人员不能在方法调用中使用 null 合并运算符。 他们需要中间检查或来自第三方框架的可选帮助程序。 然而,有了新的 nullsafe 运算符,开发人员可以在方法上拥有这样的功能。 这意味着开发人员现在可以使用调用链而不是空检查条件。 如果链中一个元素的评估失败,则整个执行链将停止并且整个链评估为“空”。

属性 V2

在其他语言中通常称为注释,属性是结构化的元数据,开发人员可以使用它来指定对象、元素或文件的属性。 开发人员还可以使用此功能为所有类名添加元数据,而无需解析 doblocks。

在 PHP 7.4 之前,将元数据添加到类声明的唯一方法是通过文档注释。 通过新的 Attributes V2 RFC,PHP 将属性定义为结构化的句法元数据,开发人员可以使用这些元数据添加到类型、函数、属性、方法、参数和常量的声明中。

现在,开发人员可以在文档块注释之前或之后添加属性,并让其中的一个或多个属性具有一个或多个关联值。

匹配表达式 V2

熟悉“switch 表达式”的人已经知道什么是匹配表达式。 只有匹配表达式是“switch”的更好版本。

例如,它提供了更安全的语义,允许开发人员只返回一次值。 它还可以在不“破坏”值的情况下组合条件。 另外,它不进行任何类型强制转换并使用严格的类型比较。

建设者财产提升

此 RFC 引入了更简洁的语法来帮助简化属性声明,旨在合并构造函数和参数定义。 现在,开发人员可以通过减少冗余和缩短来更好地声明属性或参数。 此 RFC 还允许开发人员减少他们为值对象编写的样板代码。

更清晰的字符串与数字比较

PHP 8.0 提供了这个 RFC 来使数字字符串比较更加合理。 以前做这样的任务,PHP 会先将字符串转换为数字,然后再进行整数或浮点数之间的比较。 虽然这种做法以不同的方式提供帮助,但它可能会造成站点功能和安全隐患的致命错误。

如前所述,此 RFC 旨在为字符串与数字的比较提供更合理的行为。 与数字字符串比较时,它将使用数字比较,或者将数字转换为字符串并使用字符串比较。

内部函数的一致类型错误

传递非法类型参数时,内部函数和用户定义函数的行为不同。 内部函数不会像用户定义的函数那样抛出“TypeError”。 相反,它们会发出警告并将它们返回为“null”。

PHP 8.0 通过提出一个 RFC 来解决这些不一致问题,该 RFC 使内部参数解析 API 在参数类型不匹配的情况下生成“ThrowError”。 正因为如此,所有内部函数行为都更加一致。

PHP代码

新类、接口和函数

PHP 8.0 新的显着变化包括 WeakMap 类。 通常,弱映射是具有弱引用键的数据或对象的集合。 弱引用数据意味着无法阻止它们被破坏,从而导致性能不佳和内存泄漏。

PHP 7.4 支持弱引用以保留对不会阻止数据被破坏的数据的引用。 然而,原始的弱引用仅限于它们自己。

另一方面,弱地图在实践中更为常见。 但是不可能在 PHP 弱引用之上实现一个有效的弱映射。 使用 PHP 8.0 的 WeakMap 类,开发人员可以做到这一点。 他们可以将对象创建为开发人员或程序可以破坏的弱映射键。 这意味着如果长时间没有引用它们,PHP 会将这些对象视为垃圾并将其收集起来。

除了许多有用的新 PHP 8.0 功能外,另一个新增功能是 Stringable 接口。 此 RFC 自动将此函数添加到所有实现“__toString()”方法的类。 这意味着开发人员不必在每次类实现代码时手动对接口进行编码。

在以前的 PHP 版本中,“strstr”和“strpos”是开发人员在字符串中查找指针的标准选项。 不幸的是,许多人认为这两个函数不够直观,并且可能让新的 PHP 开发人员感到困惑。 现在,他们可以使用新的“str_contains”函数更轻松地在字符串中进行搜索。

除了 str_contains 之外,PHP 8.0 还提供了“str_starts_with()”和“str_ends_with()”来帮助更好地在字符串中进行针头搜索。

其他新函数包括“fdiv()”、“get_debug_type()”、“get resource_id()”、“token_get_all()”对象实现,以及 DOM 遍历和操作 API。

类型系统和错误处理

PHP 8.0 还提供了各种系统和错误处理改进。 其中之一是混合型。 “混合类型”有助于防止代码中缺少类型。 在 PHP 中,缺少类型可能意味着函数返回 null、多种类型中的一种或无法进行类型提示的类型。

通常,“混合”可能表示数组、布尔值、可调用值、整数、浮点数、空值、对象、资源和字符串。 通过新的混合类型,开发人员可以为参数、类属性和函数返回添加类型。 这样做将有助于表明类型信息没有被遗忘,而是被更准确地指定了。

PHP 8.0 带来的另一个显着改进是静态返回类型。 在 PHP 8.0 之前,“self”可以返回,但“static”不能。 现在,凭借 PHP 的动态类型特性,开发人员会发现此功能非常有用。

PHP 提供的其他类型系统和错误处理改进包括抽象特征方法验证、魔术方法的正确签名、私有方法的继承以及重新分类的引擎警告。 它还针对不兼容的方法签名和不透明对象而不是 Curl、Gd、Sockets、OpenSSL、XMLWriter 和 XML 扩展的资源存在致命错误。

其他语法更新

PHP 8.0 还提供了许多语法改进。 例如,开发人员现在可以将“throw”用作表达式而不是语句,从而可以在不同的地方抛出异常。

此外,PHP 8.0 还提供了变量语法 RFC,有助于解决程序变量语法中的多个不一致问题。 通过此 RFC,开发人员现在可以处理被忽视的小案例。

此外,PHP 8.0 还提供了非捕获捕获。 在更新之前,如果开发人员想要捕获异常,他们会将异常存储在变量中。 对于非捕获捕获,它们可以省略变量。

此外,开发人员现在可以将命名空间名称视为单个标记,并允许在对象上使用“::class”。 此外,它允许在参数列表和闭包使用列表 RFC 中使用尾随逗号。

WordPress的

新的 PHP 如何影响您的 WordPress 网站

目前,WordPress 支持 PHP 版本 7.4、8.0 和 8.1。 不幸的是,一些用户不愿意升级,因为新版本与他们喜欢的主题和插件不兼容。

同时,兼容性问题只有在他们不使用最新的 WordPress 版本(如 5.9 和 6.0)时才会出现。 有些人不愿意这样做,因为他们更喜欢使用遗留或过时的软件,这会阻止他们升级到最新的 PHP 版本。 正因为如此,他们往往会在开发过程中遇到更多的问题。

另一方面,由于其新功能和改进,在其 WordPress 网站上试用过最新版本 PHP 的开发人员体验到更好、更轻松的开发。 PHP 8.0 和 8.1 提供了出色的错误处理和优化。 此外,8.1 计划在接下来的几年中提供积极的支持和安全更新。

为 PHP 更新准备您的 WordPress 站点

如前所述,PHP 8.0 与旧版 WordPress 存在特定的兼容性问题。 为了获得无缝的开发体验,最好将您的站点更新到版本 5.9 或 6.0 以支持新的 PHP 功能。

如果您不愿意将您的 WordPress 网站升级到最新版本,您可以先使用各种在线工具对其进行测试,看看是否可以继续操作而不会出现错误。 此外,在为新的 PHP 8.0 配置站点之前,最好先克隆它,以免因错误而丢失数据。 完成后,在最新的 PHP 版本上测试它以查看它们是否兼容。

如果特定主题和插件不适用于 PHP 8.0,您必须将它们更新到最新版本。 不要返回到旧的 PHP,而是联系主题或插件的支持团队并告知他们兼容性问题。 他们应该更新您网站的功能,以便他们可以无缝地使用 PHP 8.0 和 PHP 8.1。

增强您的 WordPress 网站

随着现代技术的飞速发展,对更具竞争力和高性能网站的需求不断增长。 这意味着不愿意适应新趋势可能会使您的网站落后。

今天,编程语言 PHP 提供了新功能,可帮助开发人员比以前更好地编写代码,这要归功于其 8.0 和 8.1 版本。 虽然今天的新特性已经为开发人员带来了很多,但 PHP 承诺为明天的网站带来更多。