如果不用兼容 PHP 7.4 以前的版本,就只需要實(shí)現(xiàn)新的方法,否則需要同時(shí)實(shí)現(xiàn)兩個(gè)方法。
null
傳遞給內(nèi)置函數(shù)的非 null 值參數(shù)為了與用戶定義的函數(shù)行為保持一致,標(biāo)量類型需要被明確標(biāo)記為允許為 null,內(nèi)置函數(shù)的標(biāo)量類型默認(rèn)情況下允許為 null 的行為已被廢棄。
<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
// is deprecated
?>
從 float 隱式轉(zhuǎn)換為 int 將會導(dǎo)致精度的丟失,目前這種行為已被廢棄。 這將影響到 array 中的鍵、嚴(yán)格模式下 int 類型的聲明以及對 int 的操作。
<?php
$a = [];
$a[15.5]; // 廢棄,作為鍵值將會丟失 0.5
$a[15.0]; // OK,因?yàn)?nbsp;15.0 == 15
?>
在 trait 上直接調(diào)用 static 方法、直接訪問 static 屬性的行為已被廢棄。靜態(tài)方法和屬性只能在使用了 trait 的類上被訪問。
在 __sleep() 中返回一個(gè)非 array 類型的值現(xiàn)在將會產(chǎn)生一個(gè)診斷。
<?php
function &test(): void {}
?>
E_NOTICE
提示:Only variable references should be returned by reference
。
false
進(jìn)行自動(dòng)代入(Autovivification)自動(dòng)代入指的是追加一個(gè)值時(shí)創(chuàng)建出新 array 的過程。對于標(biāo)量值而言,自動(dòng)代入是不被允許的;然而 false 是一個(gè)例外。現(xiàn)在這將會被廢棄。
<?php
$arr = false;
$arr[] = 2; // 廢棄
?>
注意:
對
null
或者未定義的值進(jìn)行自動(dòng)代入仍然是被允許的:<?php
// 從未定義的值
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// 從 null
$arr = null;
$arr[] = 2;
?>
傳遞一個(gè)非字符串類型參數(shù)的行為已被廢棄。在將來,參數(shù)將被解釋為一個(gè)字符串而不是 ASCII 編碼。根據(jù)可預(yù)期的行為,參數(shù)需要被轉(zhuǎn)化為 string 或者對
chr() 進(jìn)行一次顯式調(diào)用。這會影響所有的 ctype_*()
函數(shù)。
在 date_sun_info() 的支持下,date_sunrise() 和 date_sunset() 已被廢棄。
strptime() 已被廢棄。請使用 date_parse_from_format() (不依賴 locale 的解析)或者 IntlDateFormatter::parse() (依賴 locale 的解析)代替。
strftime() 和 gmstrftime() 已被廢棄。請使用date()(不依賴 locale 的格式化)或者 IntlDateFormatter::format() (依賴 locale 的格式化)代替。
FILTER_SANITIZE_STRING
和
FILTER_SANITIZE_STRIPPED
過濾器已被廢棄。
INI 設(shè)置項(xiàng) filter.default 已被廢棄
imageopenpolygon() 和
imagefilledpolygon()
的 num_points
參數(shù)已被廢棄。
mhash()、
mhash_keygen_s2k()、
mhash_count()、
mhash_get_block_size()、
mhash_get_hash_name() 已被廢棄。 請使用
hash_*()
系列函數(shù)代替。
NIL
常量已被廢棄。請使用 0
代替。
使用 bool 參數(shù)調(diào)用 IntlCalendar::roll()
已被廢棄。請分別使用 1
和
-1
來代替 true
and false
。
無參數(shù)調(diào)用 mb_check_encoding() 已被廢棄。
mysqli_driver::$driver_version 屬性已被廢棄。它是無意義且過時(shí)的,使用
PHP_VERSION_ID
來代替。
使用 mysqli
參數(shù)來調(diào)用
mysqli::get_client_info()
或 mysqli_get_client_info() 已被廢棄。請不帶任何參數(shù)調(diào)用
mysqli_get_client_info()
來獲取客戶端類庫的版本信息。
mysqli::init() 方法已被廢棄。使用 parent::__construct() 來代替對 parent::init() 的調(diào)用。
INI 設(shè)置項(xiàng) oci8.old_oci_close_semantics 已被廢棄。
odbc_result_all() 已被廢棄。
PDO::FETCH_SERIALIZE
獲取模式已被廢棄。
對于所有 pgsql_*()
函數(shù)不傳遞連接參數(shù)的方式已被廢棄。
在 SSL 流上下文參數(shù)的代替下,
SoapClient::__construct() 的
ssl_method
選項(xiàng)已被廢棄。
對一個(gè)對象調(diào)用 key()、current()、 next()、prev()、 reset()、end() 已被廢棄。對一個(gè)對象應(yīng)優(yōu)先使用 get_mangled_object_vars(),或使用 ArrayIterator。
INI 配置項(xiàng)
auto_detect_line_endings
已被廢棄。如有必要,可以手動(dòng)處理 "\r"
換行符。
FILE_BINARY
和 FILE_TEXT
常量已被廢棄。它們從未產(chǎn)生過任何作用。