周一,WordPress核心贡献者Jonathan Desrosiers发布了 详细的帖子 在Make WordPress Core博客上,了解即将发布的PHP 8版本及其对WordPress的影响。
PHP 8即将到来
预定于 2020年11月26日,PHP 8是对我们最喜欢的脚本语言的下一个主要更新。 虽然以前的PHP版本对WordPress生态系统没有太大的负面影响,但此更新具有一些可能影响向后兼容性的重大更改。 还应注意,PHP 7.x中不推荐使用的许多功能现在将在PHP 8中删除。
WordPress核心的状态
Desrosiers在他的文章中重点介绍了为使核心软件保持最新状态而进行的工作。 他写道:“ WordPress Core旨在与5.6版本(当前计划于2020年12月8日)中的PHP 8.0兼容,”。
但是,这并不意味着在发布WordPress 5.6时安全地升级到PHP 8。 WordPress很少单独运行,通常至少依赖一个主题和一组插件来充当博客或网站。 因此,他指出:“无法知道更广泛的生态系统(插件,主题等)对PHP 8的支持状态。 因此,应将WordPress 5.6与PHP 8“测试版兼容”。”
从本质上讲,这意味着,直到大多数主要主题和插件都与PHP 8兼容,WordPress才被视为完全兼容。
了解PHP 8如何影响您的插件或主题
像Yoast这样的公司已经为此准备了一段时间。 10月下旬,Yoast首席技术官Omar Reiss和其他贡献者Juliette Reinders Folmer(维护者) WordPress编码标准对PHPCS的嗅探以及Yoast DevOps经理Herre Groen编写并发布了 全面的WordPress / PHP 8兼容性报告。
我强烈建议您花时间阅读整个报告,但它确实概述了PHP 8升级可能对大型WordPress网站(尤其是插件和主题生态系统)产生如此巨大影响的主要原因。
“但是,PHP 7. *版本的弃用范围比以前版本的PHP大得多。 从PHP 5.6到PHP 7是一个相对简单的迁移,从7.x到8的迁移可能会非常痛苦,尤其是对于非常老的代码库,例如WordPress和许多可用的插件。 对于类型良好的代码库或最新的PHP版本保持最新的代码库,这没有什么大问题。”
作为一些插件的维护者,其中一些插件的代码可追溯到八年前,令人担忧的是,此升级可能会导致网站崩溃。
PHP兼容性库。如何做好自我准备
我问Reiss和Folmer,插件和主题开发人员可以做些什么来做准备,他们共享了一些建议。
首先,开发人员应告知自己有关PHP 8的更改:阅读 关于PHP 8的Make post, 阅读 Yoast PHP8兼容性 报告,请阅读“从PHP 7.4迁移到PHP 8.0”部分,并通过阅读 在PHP 8分支中升级文档 和 适用于PHP 8的RFC。
可以使用一些可用的工具来帮助查找不兼容性:
- 通过php -l命令(确保遍历所有文件)或通过使用 PHP平行皮棉。
- 跑 PHP兼容性 关于它们的代码:应该注意的是,几乎所有与PHP 8相关的嗅探都在PHPCompatibility的10.0.0版本中,所以人们需要使用developer分支或通过Composer dev-暂时进行开发,直到发布10.0.0版为止。 同样重要的是,要使此方法可靠,需要相当大的测试范围。
- 对PHP 8上的插件或主题运行单元/集成测试,并修复所有出现的错误。 这通常意味着首先需要使测试套件与PHPUnit 9.3+兼容。 的 PHPUnit Polyfills 包装和 WP测试实用程序 软件包(均在Yoast GitHub组织下发布)可以帮助解决此问题。
- 运行WordPress 单元测试 和WordPress 端到端测试 激活您的插件,并修复出现的所有问题。
- 检查所述测试的(严格)代码覆盖率是否足够高,如果不够,请添加更多测试,确保覆盖了满意和不满意的路径。
- 如果没有测试,请手动测试所有内容,尤其是关注“不愉快的道路”,并期望在可预见的将来收到错误报告。 同时,这可能是研究为您的插件或主题实施单元/集成测试的好时机。
仍然有时间,但时间已经耗尽
正如Desrosiers在Make帖子中指出的那样,WordPress仅在12月初发布5.6时正式目标是准备好PHP 8。 潜在地,这意味着一旦WordPress核心兼容,许多专注于WordPress的托管公司将仅考虑向其客户提供升级。 因此,作为插件和主题开发人员,我们有一些时间来测试我们的产品并将其准备就绪,但是该窗口正在迅速关闭。
对我们来说幸运的是,掌握了最新的知识和工具。 我们只需要将它们付诸行动。
像这样:
喜欢加载中……