(\?[^php]).*(\:).*(\?).*(\:[^=])
上述正規表達式可以幫助其他人找到巢狀的三元運算子
巢狀三元運算必須明確使用括號來指定運算順序。先前,在不使用括號的情況下,左關聯性在大多數情況下不會產生預期的行為。
<?php
1 ? 2 : 3 ? 4 : 5; // 已棄用
(1 ? 2 : 3) ? 4 : 5; // 可以
1 ? 2 : (3 ? 4 : 5); // 可以
?>
當巢狀到中間運算元時,括號並*非*必要的,因為這總是明確的,並且不受結合性的影響。
1 ? 2 ? 3 : 4 : 5 // 可以
使用大括號的陣列和字串偏移存取語法已被棄用。請使用 $var[$idx]
取代 $var{$idx}
。
$this
時解除繫結 $this
解除繫結使用 $this
的非靜態閉包的 $this
已被棄用。
parent
關鍵字在沒有父類別的類別中使用 parent
已被棄用,未來將會拋出編譯時錯誤。目前只有在執行時期存取父類別時才會產生錯誤。
allow_url_include ini 指令已被棄用。啟用它會在啟動時產生棄用通知。
將無效字元傳遞給 base_convert()、bindec()、octdec() 和 hexdec() 現在會產生棄用通知。結果仍將如同無效字元不存在一樣進行計算。開頭和結尾的空白字元,以及 0x 類型的字首(取決於基數)仍然允許。
對物件使用 array_key_exists() 已被棄用。應該改用 isset() 或 property_exists()。
get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 函式已被棄用。它們一律會傳回 false
。
convert_cyr_string() 函式已被棄用。它可以用 mb_convert_string()、iconv() 或 UConverter 其中之一來取代。
money_format() 函式已被棄用。它可以用 intl 的 NumberFormatter 功能來取代。
ezmlm_hash() 函式已被棄用。
restore_include_path() 函式已被棄用。它可以用 ini_restore('include_path')
來取代。
以反向順序傳遞參數給 implode() 已被棄用,請使用 implode($glue, $parts)
取代 implode($parts, $glue)
。
以大小寫不敏感的常數註冊導入類型程式庫已被棄用。
FILTER_SANITIZE_MAGIC_QUOTES
已被棄用,請改用 FILTER_SANITIZE_ADD_SLASHES
。
傳遞非字串模式給 mb_ereg_replace() 已被棄用。目前,非字串模式會被解譯為 ASCII 字碼點。在 PHP 8 中,模式將會被解譯為字串。
將編碼作為第三個參數傳遞給 mb_strrpos() 已被棄用。請改為傳遞 0 位移,並將編碼作為第四個參數。
ldap_control_paged_result_response() 和 ldap_control_paged_result() 已被棄用。分頁控制可以改為與 ldap_search() 一起發送。
呼叫 ReflectionType::__toString() 現在會產生棄用通知。自 PHP 7.1 起,文件中已棄用此方法,建議使用 ReflectionNamedType::getName(),但由於技術原因先前並未拋出棄用通知。
所有 Reflection 類別上的 export()
方法已被棄用。請建構一個 Reflection 物件並將其轉換為字串。
<?php
// ReflectionClass::export(Foo::class, false) 的結果為:
echo new ReflectionClass(Foo::class), "\n";
// $str = ReflectionClass::export(Foo::class, true) 的結果為:
$str = (string) new ReflectionClass(Foo::class);
?>
由於 glibc 的上游棄用,socket_addrinfo_lookup() 的 AI_IDN_ALLOW_UNASSIGNED
和 AI_IDN_USE_STD3_ASCII_RULES
旗標已被棄用。