WordPress 5.5 对PHP的兼容做了一些改进和变更,以不断改善所有受支持的PHP版本(当前为5.6.20–7.4)之间的兼容性。
以下是开发者需要注意的一些事项。
自动PHP兼容性扫描
在WordPress 5.3中,内核的Travis-CI中添加了一个新定时作业,以使用PHPCompatibilityWP PHPCS规则集扫描潜在的PHP兼容性问题(请参阅#46152)。
在5.5周期中,将单独检查每个潜在问题,并进行修复或手动将其标记为假阳性(false-positive)。
现在,不允许这种扫描产生错误或警告,可以在提交后立即标记和检查潜在的PHP不兼容性,以确保它们永远不会在WordPress中发布。
将来,当WordPress支持的PHP版本发生更改(向任一方向更改)时,可以轻松地调整配置文件以检测新支持版本范围内的潜在问题。
有关更多信息,请参见Trac上的(#49922)。
不推荐使用:wp_unregister_GLOBALS()
PHP中的register_globals
指令在5.3版中已弃用,在5.4版中已完全删除。因为该函数的第一行调用ini_get()
(false
如果未识别该指令则返回),因此该函数将始终尽早返回,从而使其不必要。
自WordPress 5.5起不推荐使用此wp_unregister_GLOBALS()
功能。
有关更多信息,请参见#49938。
不推荐使用: $HTTP_RAW_POST_DATA
$HTTP_RAW_POST_DATA
全局变量在PHP 5.6.0过时,在PHP 7.0.0完全去除。因此,开发人员不应依赖此变量的存在或准确性。但是,在插件目录中搜索此变量仍会产生约1,500个结果。尽管其中一些匹配项$HTTP_RAW_POST_DATA
在注释中或兼容性标记中标记,但是开发人员应审核他们的代码以尽可能删除此变量。
由于仍支持PHP 5.6,并且该变量存在于大量插件中,因此在WordPress 5.5中不会将其完全删除。但是,当支持的PHP版本更改为PHP> = 7.0时,它将从WordPress内核中删除。
以下是推荐的替代方式:
$var = file_get_contents( 'php://input' );
5.5中已删除了一些不影响代码结果的变量。但是,还有两个实例将被保留,因为在将不良做法告知社区之前,将它们删除特别有风险。
有关更多信息,请参阅Trac(#49810)上的相关工单。
在IXR库中spread运算符用法
在WordPress 5.3中,在整个代码库中引入了PHP spread 运算符。除了代码现代化之外,利用 spread 运算符还有很多好处:
“允许使用的 spread 运算符简化了代码和提高性能-无论是在速度和内存使用-尤其是因为它已经在许多这些过程中使用进行多次功能被引入的每 一个页面加载…”
WP 5.3: Introducing the spread operator by @jrf
与内核捆绑在一起的IXR库(现在被视为“被采用的”库)为WordPress中与XML-RPC相关的功能提供了支持。
IXR库代码中的所有func_get_args()
调用现在都已更新,以利用spread运算符。
有关更多信息,请参阅Trac工单(#48267),WP 5.3:介绍了spread运算符 ,或最初将spread运算符引入Core的Trac工单(#47678)。
使用Composer安装PHPUnit
有时很难启动并运行本地环境以为WordPress 内核做出贡献,尤其是在需要运行PHPUnit测试套件时。WordPress和PHP版本的不同组合要求使用不同版本的PHPUnit。
Composer是用于PHP中的依赖项管理的工具。指定项目依赖项后,它将为您适当地管理安装和更新那些依赖项。
从[47881]开始,PHPUnit现在已被定义为WordPress Core composer.json
文件中的开发人员要求。
运行composer install
将根据Composer运行的PHP版本确定要安装的PHPUnit的适当版本。
有关更多信息,请参阅Trac工单(#46815)。
其他构建/测试工具改进
- 现在,在本地运行Core linting时将忽略包含
src
的插件和主题。这将防止在本地使用src
代替build
开发时标记违反代码标准的行为(请参阅#49781)。 - 以前,当
lint:php
作业在Travis-CI上运行时,在 linting 之前使用PHPCBF格式化代码。由于composer format
在进行更改时运行会返回错误,因此无法执行 linting 部分,也不会生成报告。Core在为问题添加代码库之前将不再运行formatting命令(请参阅#49722)。 - WordPress编码标准规则集已从2.1.1版本更新到2.3.0。有关此更新中包含的更改的完整列表,请阅读规则集的发行说明(请参阅#50258)。
readme.html
文件中指定的PHP推荐版本已从7.3更改为7.4。这使该建议与WordPress.org上的建议保持一致(请参阅#50480)