WordPress 5.5 對(duì)PHP的兼容做了一些改進(jìn)和變更,以不斷改善所有受支持的PHP版本(當(dāng)前為5.6.20–7.4)之間的兼容性。

以下是開(kāi)發(fā)者需要注意的一些事項(xiàng)。
自動(dòng)PHP兼容性?huà)呙?span id="u5att0loeqg" class="ez-toc-section-end">
在WordPress 5.3中,內(nèi)核的Travis-CI中添加了一個(gè)新定時(shí)作業(yè),以使用PHPCompatibilityWP PHPCS規(guī)則集掃描潛在的PHP兼容性問(wèn)題(請(qǐng)參閱#46152)。
在5.5周期中,將單獨(dú)檢查每個(gè)潛在問(wèn)題,并進(jìn)行修復(fù)或手動(dòng)將其標(biāo)記為假陽(yáng)性(false-positive)。
現(xiàn)在,不允許這種掃描產(chǎn)生錯(cuò)誤或警告,可以在提交后立即標(biāo)記和檢查潛在的PHP不兼容性,以確保它們永遠(yuǎn)不會(huì)在WordPress中發(fā)布。
將來(lái),當(dāng)WordPress支持的PHP版本發(fā)生更改(向任一方向更改)時(shí),可以輕松地調(diào)整配置文件以檢測(cè)新支持版本范圍內(nèi)的潛在問(wèn)題。
有關(guān)更多信息,請(qǐng)參見(jiàn)Trac上的(#49922)。
不推薦使用:wp_unregister_GLOBALS()
PHP中的register_globals指令在5.3版中已棄用,在5.4版中已完全刪除。因?yàn)樵摵瘮?shù)的第一行調(diào)用ini_get()(false如果未識(shí)別該指令則返回),因此該函數(shù)將始終盡早返回,從而使其不必要。
自WordPress 5.5起不推薦使用此wp_unregister_GLOBALS()功能。
有關(guān)更多信息,請(qǐng)參見(jiàn)#49938。
不推薦使用: $HTTP_RAW_POST_DATA
$HTTP_RAW_POST_DATA全局變量在PHP 5.6.0過(guò)時(shí),在PHP 7.0.0完全去除。因此,開(kāi)發(fā)人員不應(yīng)依賴(lài)此變量的存在或準(zhǔn)確性。但是,在插件目錄中搜索此變量仍會(huì)產(chǎn)生約1,500個(gè)結(jié)果。盡管其中一些匹配項(xiàng)$HTTP_RAW_POST_DATA在注釋中或兼容性標(biāo)記中標(biāo)記,但是開(kāi)發(fā)人員應(yīng)審核他們的代碼以盡可能刪除此變量。
由于仍支持PHP 5.6,并且該變量存在于大量插件中,因此在WordPress 5.5中不會(huì)將其完全刪除。但是,當(dāng)支持的PHP版本更改為PHP> = 7.0時(shí),它將從WordPress內(nèi)核中刪除。
以下是推薦的替代方式:
$var = file_get_contents( 'php://input' );
5.5中已刪除了一些不影響代碼結(jié)果的變量。但是,還有兩個(gè)實(shí)例將被保留,因?yàn)樵趯⒉涣甲龇ǜ嬷鐓^(qū)之前,將它們刪除特別有風(fēng)險(xiǎn)。
有關(guān)更多信息,請(qǐng)參閱Trac(#49810)上的相關(guān)工單。
在IXR庫(kù)中spread運(yùn)算符用法
在WordPress 5.3中,在整個(gè)代碼庫(kù)中引入了PHP?spread?運(yùn)算符。除了代碼現(xiàn)代化之外,利用 spread?運(yùn)算符還有很多好處:
“允許使用的 spread?運(yùn)算符簡(jiǎn)化了代碼和提高性能-無(wú)論是在速度和內(nèi)存使用-尤其是因?yàn)樗呀?jīng)在許多這些過(guò)程中使用進(jìn)行多次功能被引入的每?一個(gè)頁(yè)面加載…”
WP 5.3: Introducing the spread operator?by @jrf
與內(nèi)核捆綁在一起的IXR庫(kù)(現(xiàn)在被視為“被采用的”庫(kù))為WordPress中與XML-RPC相關(guān)的功能提供了支持。
IXR庫(kù)代碼中的所有func_get_args()調(diào)用現(xiàn)在都已更新,以利用spread運(yùn)算符。
有關(guān)更多信息,請(qǐng)參閱Trac工單(#48267),WP 5.3:介紹了spread運(yùn)算符?,或最初將spread運(yùn)算符引入Core的Trac工單(#47678)。
使用Composer安裝PHPUnit
有時(shí)很難啟動(dòng)并運(yùn)行本地環(huán)境以為WordPress 內(nèi)核做出貢獻(xiàn),尤其是在需要運(yùn)行PHPUnit測(cè)試套件時(shí)。WordPress和PHP版本的不同組合要求使用不同版本的PHPUnit。
Composer是用于PHP中的依賴(lài)項(xiàng)管理的工具。指定項(xiàng)目依賴(lài)項(xiàng)后,它將為您適當(dāng)?shù)毓芾戆惭b和更新那些依賴(lài)項(xiàng)。
從[47881]開(kāi)始,PHPUnit現(xiàn)在已被定義為WordPress Core composer.json文件中的開(kāi)發(fā)人員要求。
運(yùn)行composer install將根據(jù)Composer運(yùn)行的PHP版本確定要安裝的PHPUnit的適當(dāng)版本。
有關(guān)更多信息,請(qǐng)參閱Trac工單(#46815)。
其他構(gòu)建/測(cè)試工具改進(jìn)
- 現(xiàn)在,在本地運(yùn)行Core linting時(shí)將忽略包含
src的插件和主題。這將防止在本地使用src代替build開(kāi)發(fā)時(shí)標(biāo)記違反代碼標(biāo)準(zhǔn)的行為(請(qǐng)參閱#49781)。 - 以前,當(dāng)
lint:php作業(yè)在Travis-CI上運(yùn)行時(shí),在?linting 之前使用PHPCBF格式化代碼。由于composer format在進(jìn)行更改時(shí)運(yùn)行會(huì)返回錯(cuò)誤,因此無(wú)法執(zhí)行?linting 部分,也不會(huì)生成報(bào)告。Core在為問(wèn)題添加代碼庫(kù)之前將不再運(yùn)行formatting命令(請(qǐng)參閱#49722)。 - WordPress編碼標(biāo)準(zhǔn)規(guī)則集已從2.1.1版本更新到2.3.0。有關(guān)此更新中包含的更改的完整列表,請(qǐng)閱讀規(guī)則集的發(fā)行說(shuō)明(請(qǐng)參閱#50258)。
readme.html文件中指定的PHP推薦版本已從7.3更改為7.4。這使該建議與WordPress.org上的建議保持一致(請(qǐng)參閱#50480)




