最近,PHP開(kāi)發(fā)團(tuán)隊(duì)對(duì)PHP 7.4的新棄價(jià)進(jìn)行了投票,該補(bǔ)貼應(yīng)該在11月底發(fā)布?,F(xiàn)在第一個(gè)測(cè)試版已經(jīng)發(fā)布,功能已修復(fù)。當(dāng)前版本不僅提供了新選擇的Deprecations,還提供了一些BugFix。
PHP開(kāi)發(fā)團(tuán)隊(duì)發(fā)布了PHP 7.4的第一個(gè)beta版本。這決定了功能。PHP 7.4beta1除了新的Deprecations之外還帶來(lái)了一些BugFix。我們正在研究新版本的變化。
PHP 7.4beta1有新的棄用
以前,PHP允許方形括號(hào)和花括號(hào)可互換使用,以訪問(wèn)數(shù)組元素和字符串偏移。來(lái)自PHP內(nèi)部的PHP RFC的示例,用于說(shuō)明:
$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"
這部分導(dǎo)致了混亂和問(wèn)題。例如,花括號(hào)不能用于將元素寫入數(shù)組:
$array[] = 3; echo $array[2]; // prints 3 $array{} = 3; // Parse error: syntax error, unexpected '}'
使用花括號(hào)語(yǔ)法也無(wú)法創(chuàng)建數(shù)組:
$array = [1, 2]; // works $array = {1, 2}; // Parse error: syntax error, unexpected '{'
事實(shí)證明,它很難用于列表映射:
[$one, $two] = $array; // works {$one, $two} = $array; // Parse error: syntax error, unexpected ','
因此,當(dāng)使用已發(fā)布的beta版的數(shù)組或字符串偏移量時(shí),花括號(hào)語(yǔ)法現(xiàn)在標(biāo)記為已棄用,因此不建議使用。
PHP 7.4beta 1帶來(lái)了PHP開(kāi)發(fā)團(tuán)隊(duì)上周投票的進(jìn)一步棄用。其中列出的14種方法在PHP 7.4中已棄用:
真正的類型 魔術(shù)引用遺產(chǎn) array_key_exists()包含對(duì)象 FILTER_SANITIZE_MAGIC_QUOTES過(guò)濾器 反射export()方法 mb_strrpos(),編碼為第三個(gè)參數(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版還準(zhǔn)備了一些bug修復(fù)。根據(jù)發(fā)行說(shuō)明,內(nèi)置網(wǎng)絡(luò)服務(wù)器中存在Segmatation Fault。這個(gè)問(wèn)題應(yīng)該通過(guò)這個(gè)beta來(lái)解決。
PHP通過(guò)CGI執(zhí)行時(shí)出現(xiàn)了另一個(gè)問(wèn)題。PHP正在尋找一個(gè)shebang(#!)。如果第一行中有哈希值,PHP不檢查以下是否是感嘆號(hào),因此是哈希值和感嘆號(hào)的組合(#?。8鶕?jù)錯(cuò)誤報(bào)告, PHP跳過(guò)相應(yīng)的行并忽略了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.
此外,還有一個(gè)錯(cuò)誤,PHP吞噬了程序的第一個(gè)字節(jié),如果它來(lái)自進(jìn)程替換(Bug#78066)。第一個(gè)測(cè)試版修復(fù)了這個(gè)錯(cuò)誤。有關(guān)當(dāng)前版本的