「函式和方法呼叫中現在允許尾端逗號」指的是函式參數,例如:
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析錯誤:語法錯誤
my1(,); // PHP 解析錯誤:語法錯誤
my1(1,); my2(2,); // 正常
?>
文件字串的結尾標記不再需要後接分號或換行符號。此外,結尾標記可以縮排,在這種情況下,縮排將從文件字串中的所有行移除。
陣列解構現在支援使用 [&$a, [$b, &$c]] = $d
語法進行參考賦值。 list() 也支援相同的語法。
現在允許在 instanceof
運算子中使用字面值作為第一個運算元,在這種情況下,結果始終為 false
。
新增了一個 CompileError 異常,ParseError 繼承自它。現在少數編譯錯誤會拋出 CompileError 異常,而不是產生致命錯誤。目前這只影響 token_get_all() 在 TOKEN_PARSE
模式下可能拋出的編譯錯誤,但未來可能會轉換更多錯誤。
現在允許在函式和方法呼叫中使用尾隨逗號。
現在,設定參數 --with-password-argon2[=dir] 支援在 password_hash()、password_verify()、password_get_info() 和 password_needs_rehash() 函式中使用 Argon2i 和 Argon2id 雜湊。可以使用 PASSWORD_ARGON2ID
常數來雜湊和驗證密碼。要在 password_*() 函式中支援 Argon2i 和 Argon2id,現在需要將 PHP 鏈結到 libargon2 參考函式庫 ≥ 20161029。
新增了用於自訂 FPM 記錄的新選項
log_limit
log_buffering
decorate_workers_output
catch_workers_output
時,此池選項允許停用工作程序輸出的裝飾。
bcscale() 現在也可以用作 getter 來取得目前正在使用的精度。
已將 LDAP 控制項的完整支援新增到 LDAP 查詢函式和 ldap_parse_result() 中。
$controls
參數,用於將控制項傳送到伺服器。
$controls
,用於從伺服器取得控制項。
LDAP_OPT_SERVER_CONTROLS
和 LDAP_OPT_CLIENT_CONTROLS
的支援。
已新增對完整字元大小寫轉換和字元摺疊的支援。與簡單的字元大小寫轉換不同,完整的字元大小寫轉換可能會改變字串的長度。例如
<?php
mb_strtoupper("Straße");
// PHP 7.2 輸出 STRAßE
// PHP 7.3 輸出 STRASSE
?>
大小寫不敏感的字串操作現在在比較期間使用字 casing 折疊而不是字 casing 對應。這表示現在會有更多字元被視為(大小寫不敏感地)相等。
使用 MB_CASE_TITLE
的 mb_convert_case() 現在根據 Cased 和 CaseIgnorable 衍生的 Unicode 屬性執行標題大小寫轉換。尤其這也改善了引號和撇號的處理。
多位元組字串 的資料表已更新為 Unicode 11。
多位元組字串函式 現在可以正確支援大於 2GB 的字串。
多位元組字串 擴充功能的效能已全面顯著提升。最大的改進在於字 casing 轉換函式。
mb_ereg_*
函式現在支援命名捕獲。類似 mb_ereg() 的匹配函式現在將使用群組編號和名稱返回命名捕獲,類似於 PCRE。
<?php
mb_ereg('(?<word>\w+)', '國', $matches);
// => [0 => "國", 1 => "國", "word" => "國"];
?>
\k<>
和 \k''
標記法,以在取代字串中參考命名捕獲。<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
和 \k''
也可用於編號參考,這也適用於大於 9 的群組編號。
已將 completion_append_character
和 completion_suppress_append
選項的支援新增至 readline_info()。這些選項僅在 PHP 連結至 libreadline(而不是 libedit)時才可用。
「函式和方法呼叫中現在允許尾端逗號」指的是函式參數,例如:
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析錯誤:語法錯誤
my1(,); // PHP 解析錯誤:語法錯誤
my1(1,); my2(2,); // 正常
?>