最近,PHP開發團隊對PHP 7.4的新棄價進行了投票,該補貼應該在11月底發布。現在第一個測試版已經發布,功能已修復。目前版本不僅提供了新選擇的Deprecations,還提供了一些BugFix。
PHP開發團隊發布了PHP 7.4的第一個beta版本。這決定了功能。 PHP 7.4beta1除了新的Deprecations之外還帶來了一些BugFix。我們正在研究新版本的變化。
PHP 7.4beta1有新的棄用
以前,PHP允許方形括號和花括號可互換使用,以存取陣列元素和字串偏移。來自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"
這部分導致了混亂和問題。例如,花括號不能用於將元素寫入數組:
$array[] = 3; echo $array[2]; // prints 3 $array{} = 3; // Parse error: syntax error, unexpected '}'
使用花括號語法也無法創建數組:
$array = [1, 2]; // works $array = {1, 2}; // Parse error: syntax error, unexpected '{'
事實證明,它很難用於列表映射:
[$one, $two] = $array; // works {$one, $two} = $array; // Parse error: syntax error, unexpected ','
因此,當使用已發布的beta版的數組或字串偏移量時,花括號語法現在標記為已棄用,因此不建議使用。
PHP 7.4beta 1帶來了PHP開發團隊上週投票的進一步棄用。其中所列的14種方法在PHP 7.4中已棄用:
真正的类型 魔术引用遗产 array_key_exists()包含对象 FILTER_SANITIZE_MAGIC_QUOTES过滤器 反射export()方法 mb_strrpos(),编码为第三个参数 implode()参数顺序组合 从非静态闭包中取消绑定$ this hebrevc()函数 convert_cyr_string()函数 money_format()函数 ezmlm_hash()函数 restore_include_path()函数 allow_url_include ini指令
在PHP 7.4beta1中,不再建議使用所有提到的方法,最後在8.0版中刪除。
PHP 7.4beta1中的BugFix
#除了上面提到的棄用之外,beta版還準備了一些bug修復。根據發行說明,內建網路伺服器中存在Segmatation Fault。這個問題應該要透過這個beta來解決。
PHP透過CGI執行時出現了另一個問題。 PHP正在尋找一個shebang(#!)。如果第一行中有雜湊值,PHP不檢查以下是否是感嘆號,因此是雜湊值和感嘆號的組合(#!)。根據錯誤報告, PHP跳過相應的行並忽略了PHP程式碼。
Test script: --------------- #<!--?php echo "Hello World\n"; ?--> 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吞噬了程式的第一個位元組,如果它來自進程替換(Bug#78066)。第一個測試版修復了這個錯誤。有關當前版本的更多信息,請參閱發行說明。
Beta1之後是beta2
PHP 7.4計畫於11月28日發布。在第一個測試版發布後,PHP 7.4beta2將於2019年8月8日發布。 PHP 7.4的時間表可以在PHP wiki中找到。
本文翻譯自:https://entwickler.de/online/php/php-7-4beta1-deprecations-579902190.html