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