PHP 7在2015年釋出後,官方在2018年末釋出了PHP 7.3穩定版,作為PHP 7第3次功能更新。這次的更新帶來了不少新功能,提升了執行效能,修正了大量的臭蟲,同時也棄用了部分功能。

PHP 7.3中第一個值得注意的就是彈性Heredoc與Nowdoc語法實作。Heredoc提供了一種添加大量文字的方法,讓開發者不再需要使用像是雙引號的跳脫字元進行轉義,Heredoc以<<<開頭,後面跟著一個記號,最後也會以相同記號加上一個分號結束。

而Nowdoc與Heredoc的行為相似,只是<<<之後的記號必須要以單引號夾住,而且Nowdoc中不進行任何的字串解析。兩者使用相同的規則規範結束記號(Closing Marker)使用,結束記號必須從該行的第一列開始,而且記號必須遵循與PHP中任何其他記號相同的命名規則,只能包含字母數字和下底線,而且必須要以非數字或是下底線開頭。

官方提到,Heredoc和Nowdoc語法很有彈性,字串結束記號不再需要分號或是換行符號,另外,結束記號可以縮排,而在這種情況縮排將會從Doc字串中的每一行被拿掉。

在PHP 7.3中,允許在函式呼叫中使用尾隨逗號(Trailing Comma),尾隨逗號是附加元素、參數或是屬性到列表中的逗號,由於呼叫附帶許多參數的函式很常見,因此這項更新將使得在這些上下文中附加參數更為方便,特別是在可變函數中。

JSON的錯誤處理在這次更新也獲得強化,而且在RFC中獲得投票23比0一致通過。在PHP 7.2中,要確定JSON是否有效,必須使用函式json_last_error()來驗證,以確保在呼叫json_encode()和json_decode()時不會發生錯誤,這個方法雖然可以確定JSON編碼與解碼是否發生錯誤,但比起直接拋出異常還是稍嫌笨拙,因為它將錯誤與訊息整個打包在一起。

在PHP 7.3中,新增了JSON_THROW_ON_ERROR標籤,可以讓開發者捕捉和處理JSON異常,當在json_encode()和json_decode()這兩個函式傳遞這個標籤時,在發生錯誤時便會拋出異常。

在PHP 7.3中加入了新的語法,讓開發者可以在list()使用參照賦值。開發者可以透過參考賦值的方式,將兩個變數指向相同的資料,而任意變數的更改都會影響原始資料。官方文件提到,雖然list()的賦值與參照賦值已經存在很長一段時間,然而,PHP 7.2之前卻無法真正使用list()參照賦值。這項更新的意義代表,開發者現在可以對多個變數進行參照賦值。

在功能棄用的部分,為記錄的mbstring函式別名(Function Aliases)將被棄用,使用mb_作為前綴的等效函式的副本,像是mb_ereg的別名mbereg,這些函式都將被標記為棄用,在編譯時會拋出棄用通知。另外,非字串Needle的字串搜尋函式也將被棄用,因此傳遞非字串Needle給字串搜尋函式將無法使用,在PHP 7.3中這些Needle需要被轉換成字串。


Advertisement

更多 iThome相關內容