當(dāng)前位置:首頁>WordPress建站>WordPress開發(fā)>WordPress開發(fā)人員要了解的 PHP 7.4 新特性

WordPress開發(fā)人員要了解的 PHP 7.4 新特性

PHP 7.4 計劃于2019年11月28日發(fā)布。WordPress 5.3也將包含一些針對已棄用功能的提交

大多數(shù)WordPress插件和主題開發(fā)人員不太可能在一段時間內(nèi)使用新的PHP 7.4功能,除非對環(huán)境可以進行一定程度控制的設(shè)置上進行工作。由于WordPress不愿意將最低PHP版本提高到最新的受支持版本,因此使用新功能可能需要幾年的時間。但是,開發(fā)人員應(yīng)確保其插件和主題與PHP 7.4兼容。跟上當(dāng)前功能也是一種很好的做法。

WordPress 5.2 將最低要求提高到PHP 5.6,并推薦使用 PHP 7.3。以下是WordPress安裝的當(dāng)前PHP使用情況統(tǒng)計信息的情況:

  • PHP 7.3 – 9.6%
  • PHP 7.2 – 22.2%
  • PHP 7.1 – 13.5%
  • PHP 7.0 – 14.9%
  • PHP 5.6 – 25.7%

當(dāng)前,PHP 7.2和7.3是唯一獲得有效支持的版本。PHP將在12月1日停止對7.1版的安全支持。

新功能

PHP 7.4包含許多新功能,這些新功能將使編寫代碼更加容易。以下是對WordPress插件和主題作者可能有用的一些功能的簡要概述。

類型屬性

PHP在5.0中首次引入了類型提示,并不斷改進該功能。PHP 7.0引入了返回類型聲明。PHP 7.4使它更上一層樓,并允許開發(fā)人員為類屬性聲明類型。這使開發(fā)人員可以確保分配給特定屬性的數(shù)據(jù)類型始終是該數(shù)據(jù)??類型。

在下面的示例中,$id屬性只能分配一個整數(shù),而$title屬性只能分配一個字符串。如果聲明了嚴(yán)格的類型,嘗試分配錯誤的數(shù)據(jù)類型將導(dǎo)致致命錯誤。否則,PHP會將值強制轉(zhuǎn)換為正確的類型。

class Event {
 
    public int $id;
 
    public string $title;
}

箭頭功能

許多開發(fā)人員一直在呼吁使用類似于JavaScript的箭頭功能。它們非常好用。但是,PHP的箭頭功能(也稱為“短閉包”)略有??不同。PHP 7.4引入了fn關(guān)鍵字(現(xiàn)在是保留關(guān)鍵字)。短閉包只能包含一個表達式,沒有return關(guān)鍵字。它們的功能不如JavaScript下的強大,但是它們確實為某些情況提供了快速的解決方案。

例如,以下代碼片段顯示了兩種不同的方法,這些方法可以根據(jù)一組用戶對象構(gòu)建一組用戶電子郵件。

// 舊方式,但還可用
$value = array_map( function( $user ) {
    return $user->user_email;
}, $users );

// 新方式
$value = array_map( fn( $user ) => $user->user_email, $users );

在數(shù)組內(nèi)部解包

參數(shù)解包是PHP 5.6引入的,因此對于WordPress領(lǐng)域的許多開發(fā)人員來說,這仍然可能是陌生的領(lǐng)域。在我的某些項目中,這是非常寶貴的功能。

PHP 7.4 允許開發(fā)人員在數(shù)組中解包數(shù)組。這應(yīng)該比array_merge()散布運算符(...)是一種語言構(gòu)造而不是一個函數(shù)要快得多。

看下下面的示例,該示例在較大的顏色數(shù)組中注入兩種顏色的數(shù)組。

$colors_a = [ 'green', 'blue' ];

$colors_b = [ 'red', ...$colors_a, 'yellow', 'purple' ];

// [ 'red', 'green', 'blue', 'yellow', 'purple' ];

空合并分配運算符

空合并賦值運算符是將isset()檢查與三元運算符組合在一起的簡便方法。

以下示例顯示了如何檢查$product['id']變量。如果已設(shè)置,則什么也不做。否則,在右側(cè)分配它的值。您可以看到PHP版本之間代碼的演變。用7.4編寫要簡單得多。

// Pre-PHP 7.0.
$product['id'] = isset( $product['id'] ) ? $product['id'] : 0;

// PHP 7.0.
$product['id'] = $product['id'] ?? 0;

// PHP 7.4.
$product['id'] ??= 0;

不推薦使用的功能

PHP 7.4將棄用某些功能。插件和主題作者可以查閱完整列表,以確定是否應(yīng)更新任何過時的代碼。我挑選了過去幾年在插件和主題代碼中看到的一些項目。在當(dāng)前代碼庫中,大多數(shù)其他不推薦使用的功能不太可能。

沒有括號的嵌套三元運算符

嵌套三元運算符通常是開發(fā)人員應(yīng)避免的東西。說真的,只是不要寫它們。它們很難遵循,并且由于人為錯誤而易于出錯。但是,如果您要謹(jǐn)慎行事并放棄好的建議,請至少使用括號。PHP 7.4不建議使用不帶括號的嵌套三元組。

// 不好!已棄用
$value = $a ? $b : $c ? $d : $e;

// 好
$value = ( $a ? $b : $c ) ? $d : $e;

// 好
$value = $a ? $b : ( $c ? $d : $e );

在對象上使用 array_key_exists()

開發(fā)人員不應(yīng)在對象上使用array_key_exists(),因為對象不是數(shù)組。而是使用更合適的property_exists()函數(shù)或isset()

// 不好,已棄用
if ( array_key_exists( $property, $object ) ) {}

// 好
if ( property_exists( $object, $property ) ) {}

// 好
if ( isset( $object->$property ) ) {}

帶有花括號的數(shù)組和字符串偏移量訪問

使用花括號進行數(shù)組和字符串偏移量訪問有點稀少,但是我已經(jīng)看到了幾次。確保您使用的方括號[],而不是的大括號{}

// 不好,已棄用
$value = $a{ $key };

// 好
$value = $a[ $key ];

聲明:文本內(nèi)容出自 https://wptavern.com/first-look-at-php-7-4-for-wordpress-developers ,由 WordPress大學(xué) 翻譯整理,轉(zhuǎn)載請保留本聲明和網(wǎng)址!

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress開發(fā)

WordPress添加頁腳小工具區(qū)域

2019-9-29 9:38:07

WordPress開發(fā)

WordPress獲取指定文章類型的文章數(shù)量

2019-10-6 8:52:07

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

平远县| 江口县| 郸城县| 芦山县| 拜城县| 喜德县| 阿克苏市| 淮安市| 九龙坡区| 玛纳斯县| 福清市| 长垣县| 钟山县| 铁岭县| 福泉市| 武宣县| 巴东县| 临海市| 基隆市| 鹰潭市| 如皋市| 关岭| 思茅市| 高青县| 犍为县| 嘉荫县| 常宁市| 达州市| 深州市| 定安县| 财经| 太仆寺旗| 日土县| 沁水县| 宁远县| 麟游县| 和顺县| 岳普湖县| 阿克陶县| 吐鲁番市| 当雄县|