PHP 8:完整指南
已发表: 2021-01-052020 年 11 月 26 日,我们进入了 PHP 8 的新世界。每次 PHP 更新都会带来一整套全新的主要功能。 虽然并非所有更新对大多数临时用户都很重要,但对于大多数经验丰富的 WordPress 开发人员来说,即使是其他更新也太小众了。
但是,无论您的开发处于何种级别,新版本的各个方面(例如速度的提高和可能损害现有代码的重大更改)都可能对您的日常工作流程产生负面影响。
在本指南中,我们将介绍 PHP 8 新版本中最重要的变化。让我们深入了解。
为什么会发生 PHP 更新
作为一个引擎,PHP 是不断变化的。 新的位总是被修改或添加以帮助优化代码并使 PHP 更容易和更容易使用。
WordPress 插件和主题创建者以及网站开发人员需要在 PHP 更改发生时及时掌握它们。 通过这样做,您将领先一步,并避免在发生更多更新后翻阅文档页面。
PHP 的每个新版本都旨在为开发环境带来积极的变化。 不幸的是,有时某些调整会损害您现有的代码。
当不兼容、落后或过时的属性与新的 PHP 更新发生冲突时,最终可能会破坏整个站点或导致站点的某些区域停止工作。
最好了解发布了哪些潜在的重大更改,以便您可以直接在自定义代码中解决它们。 这也有助于您使用具有更优化表达式的较新代码。
但是,即使您在职业生涯中没有接触过任何自定义代码,当您的 WordPress 仪表板为 PHP 的更新版本添加 WordPress PHP Update Required 通知时,您也必须决定是否要升级或不。
这个问题的答案几乎总是肯定的。 但在您这样做之前,明智的做法是查看主要功能更改并确保没有任何可能导致您出现问题的内容。 正如一句老话所说,“安全总比后悔好。”

PHP 8 版本中的新功能
这个版本的 PHP 无论如何都不是最大的更新。 但仍有一些令人兴奋的变化值得我们关注。
在某些方面,PHP 8 是一个相对较小的更新,这让人松了一口气。 这意味着可能导致现有代码出现问题的破坏性更改较少。
换句话说,当前的 PHP 版本为您提供了一些很棒的新功能,而无需花费数小时来解决问题。
虽然在此版本的 PHP 中进行了一些其他更改,但本指南将涵盖最相关的更改。
及时 (JIT) 编译器
新版 PHP 中最令人兴奋,当然也是最大的新增功能是 Just In Time(即 JIT)编译器。
您可能知道,PHP 是一种解释型语言。 这意味着它是实时运行的,而不是在编译后在预先确定的启动时间运行。
JIT 为 PHP 带来的是编译代码。 编译后的代码在某些情况下会提高性能。
如果您像许多 PHP 开发人员一样,那么您可能正在使用 Web 应用程序。 不幸的是,JIT 对 Web 应用程序帮助不大。 但在以下任务方面,它标志着巨大的进步:
- 数据分析
- 3D 渲染
- 人工智能
- 需要很长时间才能运行的其他进程
尽管这些不一定是当前最常见的 PHP 应用程序,但具有前瞻性的开发人员肯定会更多地使用 PHP。
JIT 编译器有助于使 PHP 更灵活地这样做。
事实上,JIT 几乎可以保证打开 PHP 的视野,并吸引有兴趣将其用于新用途的新开发人员。
对于现有项目,它可能不会做太多事情。
在实施 JIT 之前,请确保已在隔离环境中对其进行了测试,以查看性能是否有任何改进。
属性
PHP 新版本支持属性。 这些是您添加到代码中的一小部分元数据,例如参数、类和函数。
这意味着您不再需要使用文档块作为标准的解决方法。 尽管这听起来像是一个小改动,但它实际上让 PHP 开发人员的生活变得更加轻松。
您现在可以向任何一段单独的代码添加任意数量的属性,然后使用 use 语句导入它们。
您甚至可以向属性添加参数。
要将属性添加到您的代码中,只需在属性周围添加两个“小于”和两个“大于”符号。
重要的是要注意属性不向后兼容。 如果将它们移植到旧版本的 PHP 中,它们将导致错误。
您可能知道,使用 docblock 的标准解决方法是功能齐全的。 但它也一直很笨重。 使用新版本的 PHP,您现在可以直接添加属性。
尽管它是对 PHP 的一个小补充,但它的影响却是巨大的。
新的匹配表达式
Switch 语句是 if 语句的更健壮的版本。 但是,PHP 中的新匹配表达式进一步改进了该概念。
这是更短和更严格的,这有助于它更好地捕捉错误。 它还结合了条件,不需要任何 break 语句。
在这些方面,新的匹配表达式是一个显着的改进。
Switch 仍然比 match 有优势,因为它可以使用多个表达式。 但除此之外,请考虑阅读匹配表达式。
到目前为止,它们看起来像是您可能想要使用的高级替代品。
联合类型
PHP 的关键部分之一是类型:将变量分配为布尔值、整数、空值等。
在此版本的 PHP 之前,您只能分配具有单一类型的变量。 PHP 8 允许您分配两种或更多类型,也称为联合类型。
例如,您将能够分配浮点数和整数类型,并且可以使用任何一种。 它们在类型之间用一行指定,例如 float|int。
当然,您将无法将 void 与任何其他类型结合使用,因为它们是互斥的。
冗余或重复的类型,例如 float|float,也不起作用。
在旧版本的 PHP 中,您可以使用 PHPDoc 注释来尝试创建功能联合类型。 现在,您可以跳过这种变通方法,只需为您的变量分配多种类型。
静态返回和混合类型
作为开发人员,PHP 返回值用于返回函数值是常识。 在此版本之前,不能选择使用静态类型。
“Parent”和“self”是有效的返回类型,但“static”不是。 这个问题在新的 PHP 版本中得到了充分的解决。
尽管这不是一个非常常见的用例,但如果确实出现,您肯定会很高兴能够访问它。
您还会发现一种新的混合类型。 它可能更准确地被描述为伪类型,因为它代表 PHP 中存在的所有其他类型。

当您处理需要您处理多种不同类型的情况时,最好使用它。
如果您不选择特定类型,则混合将是您的默认值。
通常,最好使用新的联合类型而不是混合类型。 这是因为您可能想要更具体。
然而,这个仍然会为你服务。
现实情况是,这些都没有联合类型那么大,但它们绝对标志着改进。
新的 PHP 8 函数
新版本的 PHP 带有您可以使用的新功能。
- str_starts_with和str_ends_with - 这将检查字符串是否以特定行结束或开始
- fdiv - 这将允许除以零时始终反应的除法
- str_contains – 类似于str_starts_with和str_ends_with但会检查一个完整的字符串
- get_debug_type – 行为类似于gettype ,但会返回额外的信息,如类名
- get_resource_id – 这使得获取资源 ID 变得容易,例如数据库连接
- preg_last_error_msg – 返回一条简单易读的错误消息
测试其中一些新功能,看看如何充分利用它们。
命名参数
有些人可能会喜欢它,有些人可能会鄙视它。 无论哪种方式,命名参数都在新版本的 PHP 中。
参数让您可以将数据传递给函数。 命名参数让你通过传递参数名称而不是顺序来做同样的事情。
您仍然可以将它们与有序参数结合起来。 但如果需要,您可以跳过可选参数。
实际上,这意味着更清晰的代码和更少的错误。 毕竟,代码越紧越好。 使用起来要容易得多。
这可能会导致更改参数名称和向后兼容性的问题,这可能会导致旧 PHP 版本中断。 但是对于很多开发人员和程序员来说,这些命名参数是一个受欢迎的变化。
PHP 8 中的重大变化
新的 PHP 版本确实带来了一些重大更改。 如果您升级或移植回旧版本的 PHP,这可能会导致错误。 查看此重大更改列表,看看哪些更改会影响您。
- 引擎警告被重新分类,以便它们显示适当的严重性级别,例如通知、警告和致命错误。 认为这是一个不会影响许多项目的微小突破性更改。
- TypeError 现在将定期显示在内部函数上。 这对向后兼容性的影响比我们可能意识到的要大,但它仍然是一个可靠的变化。
- 对之前设置为静默和忽略的错误报告级别进行了多项更改。 换句话说,您以前可能没有看到的新错误现在应该传播。
- 排序更可靠、更稳定。 尽管 PHP 7 对排序进行了一些重大更改,但最新的更新对现有代码的破坏要小得多。
- 命名空间名称现在是单个标记。 它们里面不能有任何空格。 此更改的影响很小且易于修复。
- 在 PHP 的早期版本中,名称与类匹配的方法被解释为构造函数。 在新版本中,您必须使用 __construct() 方法。
还有许多其他小更新很少会导致任何问题。 一般来说,当前的 PHP 更新不会有很多问题。
在 WordPress 中升级您的 PHP 版本
作为 WordPress 开发人员,您知道让您的 PHP 版本保持最新是多么重要。 令人震惊的是,很大一部分 WordPress 用户仍在 PHP 5.6 上运行,这是一个巨大的负担。
即使您一直在运行 PHP 7.4 并认为您完全是最新的,现在绝对是更新到最新 PHP 版本的时候了。
在旧版本的 PHP 上运行 WordPress 站点是一个主要的安全风险。 过时的 PHP 版本具有黑客经常利用的可利用的安全流。
修补现有漏洞的唯一方法是始终保持 PHP 完全最新。
您还需要运行一个强大的 WordPress 安全插件来加强您的安全保护。
更新 PHP 的另一个原因是速度。 每次更新都会带来更快的速度和更优化的功能。 当然,最大的显着差异是 PHP 5.6 和 7.4 之间的差异。 但是您肯定会注意到最新更新的速度有所提高。
兼容性是在 WordPress 中保持 PHP 更新很重要的最后一个原因。
过时的 PHP 版本可能会导致许多不同的问题,这些问题可能会导致出现故障或完全破坏网站。
除此之外,还有一些主题和插件需要完全最新的 PHP 版本才能运行。
在运行更新之前,请确保您有一个 WordPress 备份插件正在运行,以防更新运行后出现任何冲突。
升级您的 PHP 版本非常简单。 您需要做的就是登录您的 cPanel 或您正在使用的主机的管理仪表板,找到 PHP 版本管理器并勾选最新版本。 但在运行更新之前,请与您的主机确认以确保他们支持最新的 PHP 更新。 有些可能在较旧的软件上运行。
有关 PHP 和 WordPress 的更多信息,请查看有关 WordPress 和 PHP 8 的官方 WordPress.org 文档。
总结:PHP 8 和 PHP 的未来
虽然这不是 PHP 7.0 – 7.4 那样的巨大更新,但 PHP 8 仍然提供了许多您可以利用的功能。
从 JIT 编译器到新属性、匹配表达式和其他对开发人员有用的功能,是时候熟悉这个重要的 PHP 新版本了。
您预计此更新的哪些部分在您的日常工作流程中使用最多?
自 2011 年以来,Kristen 一直在编写教程来帮助 WordPress 用户。您通常可以找到她为 iThemes 博客撰写新文章或为 #WPprosper 开发资源。 工作之余,克里斯汀喜欢写日记(她写了两本书!)、远足和露营、烹饪以及与家人一起进行日常冒险,希望过上更现代的生活。
