PHP8.2新特性详解:WordPress开发人员如何应对动态属性弃用与性能提升
PHP 8.2.0 于 2022 年 12 月 8 日正式发布,作为一项重大更新,它不仅带来了显著的性能改进,还简化了语法并提升了类型安全性,甚至将 null、false 和 true 视为独立类型。对 WordPress 开发人员而言,最具挑战性的变化之一是引入了只读类,这一特性禁止了动态属性的使用。动态属性已被明确弃用,并将在 PHP 9 或 PHP 10 中引发致命错误。尽管这一转变可能带来诸多不便,尤其是对 WordPress 核心而言,但弃用本身却是 PHP 礼赠给开发者的宝贵礼物。让我们深入探讨 PHP 的最新进展,以及 WordPress 开发者如何在新旧功能之间寻求平衡,确保向后兼容性,同时充分利用新功能为最终用户创造更大价值。
### Php 8 2 Released 文章目录
#### 跟上 WordPress 中的 PHP 开发
#### 向后兼容性与稳定性、前瞻性思维与创新之间的权衡
#### 提高最低 PHP 要求的最佳时机
#### 弃用通知推动开发向前发展
#### 在 PHP 8.2 之后不使用动态属性
#### 所有的发展都是维护……
#### ……所有维护都是艺术
#### 跟上 WordPress 中的 PHP 开发
WordPress 核心以其卓越的向后兼容性著称,尽管没有明确的生命周期结束日期,但企业需自行规划产品或服务的生命周期及支持的 PHP 版本。目前,WordPress 核心推荐 PHP 7.4 或更高版本,尽管仍兼容 PHP 5.6.20(该版本已于 2018 年底结束生命周期)。WordPress 项目明确警告,使用不受支持的 PHP 版本可能使网站面临安全风险。幸运的是,仅有 5.1% 的 WordPress 网站使用 PHP 5.6,2% 使用更旧版本,而 56.7% 的网站使用 PHP 7.4。然而,PHP 7.4 于 2022 年 11 月底结束生命周期,PHP 8.0 自 2023 年起提供官方安全支持不足一年,PHP 8.1 预计将于 2024 年底过时,PHP 8.2 则将在 2025 年 12 月前提供安全支持。这一快速发布周期下,WordPress 生态系统的追赶显得尤为不易,毕竟作为全球最大的内容管理系统之一,其转型需谨慎平衡。
#### 向后兼容性与稳定性、前瞻性思维与创新之间的权衡
WordPress 开发者、主机及产品公司长期面临如何在广泛用户群体与 PHP 最新特性之间取得平衡的难题。机构及自由职业者同样纠结于更新最低 PHP 要求可能导致的客户站点重大变更或崩溃风险。一方面,同步 PHP 版本能提升安全性、性能,并引入最新编程理念;另一方面,延迟更新则能维持庞大的客户群。这无疑是一场“现在付费或未来付费”的博弈,但有时必须果断做出选择。良好的用户环境数据和遥测有助于确定提升最低 PHP 版本的最佳时机,尽管这可能引发大量支持请求。
#### 提高最低 PHP 要求的最佳时机
iThemes Security Pro 7.2 版本通过提升最低 PHP 要求至 7.3 或更高版本(最高支持 8.1),为现有客户提供了创新与稳定性的双重保障。这一决策源于 WebAuthn 框架的实施需求,该框架需 PHP 7.3+ 库支持加密和公钥管理。iThemes Security Pro 7.2 中引入的 2FA、密码和生物识别登录功能,正是基于这一背景。虽然可通过重写库兼容旧 PHP 版本,但开发者选择以适度速度跟进 PHP 社区步伐,采用 PHP 7.3+ 的依赖项,因为大多数用户已具备相应条件。
对于大量采用古腾堡块编辑器的 WordPress 产品如 GiveWP,管理变更更具挑战性。WordPress 核心的稳定性虽让后端开发者感到沮丧,却为前端 JavaScript/React 开发者提供了创新空间。GiveWP 开发经理 Jason Adams 指出,其产品无需严格向后兼容,但最终仍需适应 PHP 9 架构并移除 PHP 8.2 中弃用的功能。WordPress 生态中的每个产品均无单一的“正确时间”更新最低 PHP 要求,决策需基于用户受影响程度。若 90% 用户仍使用 PHP 7.2 或 7.4,则提升至该级别是可行的,但不同产品的用户群差异可能极大。
#### 弃用通知推动开发向前发展
WordPress.com 已将 PHP 8.2 作为商业和电子商务计划的选项,并激活了相关托管功能。WordPress.org 生态系统中,设计良好的旧代码通常能与最新 PHP 版本正常工作,插件亦不会抛出致命错误。尽管 WordPress.org 核心仅官方支持 PHP 8.0,但通常能兼容最新 PHP 版本,且调试开启时警告信息有限。快速 PHP 发布周期下,开发人员需重构代码以适应弃用特性,但这也能促使他们掌握最新 PHP 版本的新概念和功能。
弃用通知实际上是一种前瞻性措施,迫使开发者在不断演进的 PHP 中保持敏锐。这些通知能提前预警未来可能出现的故障,促使开发者拥抱更安全、高性能的代码。iThemes Security 首席开发者和 WordPress 核心提交者 Timothy Jacobs 认为,E_DEPRECATED 通知如同预警系统,虽非错误,但预示着未来的风险。
#### 在 PHP 8.2 之后不使用动态属性
PHP 9 中逐步淘汰动态属性,旨在推动代码更具弹性和明确性。从 PHP 5.6 到 8.2,Brent Roose 通过数据传输对象示例展示了 PHP 代码的精简与优雅演变。动态属性在 PHP 8.2 中被弃用,开发人员需在弃用警告转为致命错误前更新代码。WordPress 作为特例,面临维护 20 年历史项目的挑战。Tonya Mork、Juliette Reinders Folmer 和 Sergey Biryukov 致力于处理 WordPress 核心中的未知动态属性弃用问题,他们担心开发人员缺乏足够时间重构代码,却为维护向后兼容性做出了巨大贡献。
#### 所有的发展都是维护……
WordPress 核心需向后移植现代 PHP 以兼容旧版本,这是一项独特的挑战。插件开发者可更轻松地利用新功能,如 PHP 8.2 的只读类和动态属性弃用,但大部分工作仍属维护范畴。PHP 8+ 的变化强调不变性,不可变数据结构虽不能从根本上解决安全问题,但能减少编程错误,降低代码复杂性。维护受支持 PHP 版本的代码,主要目的是降低安全风险。PHP 8.2 带来的实用特性如 #[\SensitiveParameter] 属性,虽未引起广泛关注,却能实现以前无法做到的元视角描述。
#### ……所有维护都是艺术
Jeff Atwood 在“维护编程的崇高艺术”一文中指出,维护被视为清洁工作,但正如艺术家 Mirele Laderman Ukeles 所言,维护本身就是艺术。开发与维护是两个基本系统,革命后往往需要有人“捡垃圾”。开发系统充满变化,而维护系统几乎没有改变余地。Laderman Ukeles 作为博物馆看门人和纽约市卫生局驻场艺术家,深刻体会到维护工作的价值。软件工程专家 Robert L. Glass、Joel Spolsky 和 Dave Thomas 均认为,维护是智力挑战,不应被贬低。Dave Thomas 甚至认为“所有编程都是维护编程”,因为开发者极少编写原始代码。Atwood 倾向于这种观点,而 WordPress 开发者则需在维护与创新的平衡中展现特殊艺术。