为WordPress插件和主题做好兼容PHP 8的准备

周一,WordPress核心贡献者Jonathan Desrosiers在WordPress博客上发布了详细的文章,内容涉及即将发布的PHP 8版本及其对WordPress的影响。

PHP 8已发布

PHP 8已于2020年11月26日发布,PHP 8是对我们最喜欢的脚本语言的下一个主要更新。虽然以前的PHP版本对WordPress生态系统没有太大的负面影响,但此更新具有一些可能影响向后兼容性的重大更改。还应注意,PHP 7.x中不推荐使用的许多功能现在将在PHP 8中删除。

WordPress核心的状态

Desrosiers在他的文章中重点介绍了为使核心软件保持最新状态而进行的工作。他写道:“ WordPress核心旨在与5.6版本(当前计划于2020年12月8日)兼容PHP 8.0”。

但是,这并不意味着在发布WordPress 5.6时可以安全地升级到PHP 8。WordPress很少单独运行,通常至少依赖一个主题和一组插件来支撑博客或网站。因此,他指出:“无法知道更广泛的生态系统(插件、主题等)对PHP 8的支持状态。因此,WordPress 5.6应该被认为与PHP 8是“ beta兼容”的

从本质上讲,这意味着,直到大多数主要主题和插件都与PHP 8兼容,WordPress才被视为完全兼容。

了解PHP 8如何影响您的插件或主题

像Yoast这样的公司已经为此准备了一段时间。10月下旬,Yoast CTO Omar Reiss与其他贡献者,PHPCS WordPress编码标准嗅探的维护者Juliette Reinders Folmer和Yoast DevOps经理Herre Groen一起,编写并发布了一份全面的WordPress / PHP 8兼容性报告

我强烈建议您花时间阅读整个报告,它确实概述了PHP 8升级可能对大型WordPress网站(尤其是插件和主题生态系统)产生巨大影响的主要原因。

“但是,PHP 7. *版本的弃用范围比以前版本的PHP大得多。从PHP 5.6到PHP 7是一个相对简单的迁移,从7.x到8的迁移可能会非常痛苦,尤其是对于非常老的代码库,例如WordPress和许多可用的插件。对于类型良好的代码库或最新的PHP版本保持最新的代码库,这没有什么大问题。”

作为一些插件的维护者,其中一些插件的代码可追溯到八年前,令人担忧的是,此升级可能会导致网站崩溃。

为WordPress插件和主题做好兼容PHP 8的准备
PHPCompatibility存储库。

如何做好自我准备

我问Reiss和Folmer,插件和主题开发人员可以做些什么来做准备,他们共享了一些建议。

首先,开发人员应告知自己有关PHP 8的变化:阅读有关PHP 8的Make帖子,阅读Yoast PHP8兼容性报告,阅读PHP手册的“从PHP 7.4迁移到PHP 8.0 ”部分,并可能阅读PHP 8分支中的UPGRADING文档和PHP 8RFC,以进行更深入的了解。

可以使用一些可用的工具来帮助查找不兼容性:

  • 通过php -l 命令(确保对所有文件进行迭代)或使用PHP Parallel Lint在其代码上的PHP 8上运行PHP lint   。
  • 在其代码上运行PHPCompatibility:应该注意的是,几乎所有与PHP 8相关的嗅探都在PHPCompatibility的10.0.0版本中,因此人们需要使用 develop 分支或通过Composer dev-develop 来实现。暂时,直到发布10.0.0版。同样重要的是,要使此方法可靠,需要相当大的测试范围。
  • 对PHP 8上的插件或主题运行单元/集成测试,并修复所有出现的错误。这通常意味着首先需要使测试套件与PHPUnit 9.3+兼容。在PHPUnit的Polyfills包和WP测试utils的包(无论是Yoast GitHub的组织下出版)可以帮助做到这一点。
  • 在激活插件的情况下运行WordPress单元测试和WordPress e2e测试,并修复出现的所有问题。
  • 检查所述测试的(严格)代码覆盖率是否足够高,如果不够,请添加更多测试,确保覆盖了满意和不满意的路径。
  • 如果没有测试,请手动测试所有内容,尤其是关注“不愉快的道路”,并期望在可预见的将来收到错误报告。同时,这可能是研究为您的插件或主题实施单元/集成测试的好时机。

仍然有时间,但时间已经耗尽

正如Desrosiers在Make帖子中指出的那样,WordPress仅在12月初发布5.6时正式目标是准备好PHP 8。潜在地,这意味着一旦WordPress核心兼容,许多专注于WordPress的托管公司将仅考虑向其客户提供升级。因此,作为插件和主题开发人员,我们有一些时间来测试我们的产品并将其准备就绪,但是该窗口正在迅速关闭。

对我们来说幸运的是,掌握了最新的知识和工具。我们只需要将它们付诸行动。

                       

点击阅读全文

上一篇 2020年11月28日 pm8:43
下一篇 2020年11月28日 pm8:57