最近,PHP開發(fā)團隊對PHP 7.4的新棄價進行了投票,該補貼應該在11月底發(fā)布。現(xiàn)在第一個測試版已經發(fā)布,功能已修復。當前版本不僅提供了新選擇的Deprecations,還提供了一些BugFix。
PHP開發(fā)團隊發(fā)布了PHP 7.4的第一個beta版本。這決定了功能。PHP 7.4beta1除了新的Deprecations之外還帶來了一些BugFix。我們正在研究新版本的變化。
PHP 7.4beta1有新的棄用
以前,PHP允許方形括號和花括號可互換使用,以訪問數(shù)組元素和字符串偏移。來自PHP內部的PHP RFC的示例,用于說明:
$array = [1, 2]; echo $array[1]; // prints 2 echo $array{1}; // also prints 2 $string = "foo"; echo $string[0]; // prints "f" echo $string{0}; // also prints "f"
這部分導致了混亂和問題。例如,花括號不能用于將元素寫入數(shù)組:
$array[] = 3; echo $array[2]; // prints 3 $array{} = 3; // Parse error: syntax error, unexpected '}'
使用花括號語法也無法創(chuàng)建數(shù)組:
$array = [1, 2]; // works $array = {1, 2}; // Parse error: syntax error, unexpected '{'
事實證明,它很難用于列表映射:
[$one, $two] = $array; // works {$one, $two} = $array; // Parse error: syntax error, unexpected ','
因此,當使用已發(fā)布的beta版的數(shù)組或字符串偏移量時,花括號語法現(xiàn)在標記為已棄用,因此不建議使用。
PHP 7.4beta 1帶來了PHP開發(fā)團隊上周投票的進一步棄用。其中列出的14種方法在PHP 7.4中已棄用:
真正的類型 魔術引用遺產 array_key_exists()包含對象 FILTER_SANITIZE_MAGIC_QUOTES過濾器 反射export()方法 mb_strrpos(),編碼為第三個參數(shù) implode()參數(shù)順序組合 從非靜態(tài)閉包中取消綁定$ this hebrevc()函數(shù) convert_cyr_string()函數(shù) money_format()函數(shù) ezmlm_hash()函數(shù) restore_include_path()函數(shù) allow_url_include ini指令
在PHP 7.4beta1中,不再推薦使用所有提到的方法,最后在8.0版中刪除。
PHP 7.4beta1中的BugFix
除了上面提到的棄用之外,beta版還準備了一些bug修復。根據(jù)發(fā)行說明,內置網(wǎng)絡服務器中存在Segmatation Fault。這個問題應該通過這個beta來解決。
PHP通過CGI執(zhí)行時出現(xiàn)了另一個問題。PHP正在尋找一個shebang(#?。H绻谝恍兄杏泄V?,PHP不檢查以下是否是感嘆號,因此是哈希值和感嘆號的組合(#!)。根據(jù)錯誤報告, PHP跳過相應的行并忽略了PHP代碼。
Test script: --------------- #<!--?php echo "Hello Worldn"; ?--> Second line. Expected result: ---------------- X-Powered-By: PHP/5.3.3-7+squeeze3 Content-type: text/html #Hello World Second line. Actual result: -------------- X-Powered-By: PHP/5.3.3-7+squeeze3 Content-type: text/html Second line.
此外,還有一個錯誤,PHP吞噬了程序的第一個字節(jié),如果它來自進程替換(Bug#78066)。第一個測試版修復了這個錯誤。有關當前版本的