如果參數的預設值是 null
,則該參數的類型會被隱式擴展為接受 null。
以下程式碼
<?php
function foo(T1 $a = null) {}
<?php
function foo(T1|null $a = null) {}
<?php
function foo(?T1 $a = null) {}
然而,如果這樣的參數宣告後面跟著一個必填參數
<?php
function foo(T1 $a, T2 $b = null, T3 $c) {}
<?php
function foo(T1 $a, T2|null $b, T3 $c) {}
<?php
function foo(T1 $a, ?T2 $b, T3 $c) {}
將一個數字提升為負數次方等同於取該數字的倒數,再提升為該負數次方的相反數的正數次方。也就是說,10-2
與 1 / 102
相同。因此,將 0
提升為負數次方相當於除以 0
,例如 0-2
與 1 / 02
或 1 / 0
相同。因此,此行為已被棄用。
這會影響指數運算子 **
和 pow() 函式。
如果需要 IEEE 754 語義,則應使用新的 fpow() 函式。
_
作為類別名稱將類別命名為 _
現在已被棄用
<?php
class _ {}
注意:
名稱以底線開頭的類別*並未*被棄用
<?php
class _MyClass {}
E_USER_ERROR
以 E_USER_ERROR
作為 error_level
呼叫 trigger_error() 現在已被棄用。
此類用法應改為拋出例外,或呼叫 exit(),以較合適者為準。
CURLOPT_BINARYTRANSFER
常數現已棄用。
DatePeriod::__construct(string $isostr, int $options = 0)
簽章已棄用。請改用 DatePeriod::createFromISO8601String()。
SUNFUNCS_RET_TIMESTAMP
、SUNFUNCS_RET_STRING
和 SUNFUNCS_RET_DOUBLE
常數現已棄用。這是基於 PHP 8.1.0 中 date_sunset() 和 date_sunrise() 函式已被棄用的結果。
將 null
或 false
傳遞給 dba_key_split() 現已棄用。在這些情況下,它總是會返回 false
。
DOM_PHP_ERR
常數現已棄用。
以下屬性已正式棄用:
將無效選項傳遞給雜湊函數現已棄用。
使用兩個以上參數呼叫 intlcal_set() 或 IntlCalendar::set() 已棄用。請改用 IntlCalendar::setDate() 或 IntlCalendar::setDateTime()。
使用兩個以上參數呼叫 intlgregcal_create_instance() 或 IntlGregorianCalendar::__construct() 已棄用。請改用 IntlGregorianCalendar::createFromDate() 或 IntlGregorianCalendar::createFromDateTime()。
使用兩個以上參數呼叫 ldap_connect() 已棄用。請改用 ldap_connect_wallet()。
使用四個以上參數呼叫 ldap_exop() 已棄用。請改用 ldap_exop_sync()。
mysqli_ping() 函式和 mysqli::ping() 方法現已棄用,因為重新連線功能已在 PHP 8.2.0 中移除。
mysqli_kill() 函式和 mysqli::kill() 方法現已棄用。如果需要此功能,可以使用 SQL KILL
命令代替。
mysqli_refresh() 函式和 mysqli::refresh() 方法現已棄用。如果需要此功能,可以使用 SQL FLUSH
命令代替。所有 MYSQLI_REFRESH_*
常數也已棄用。
明確傳遞 mode
參數給 mysqli_store_result() 已棄用。由於 MYSQLI_STORE_RESULT_COPY_DATA
常數僅與此函式一起使用,因此也已棄用。
在以美元符號括起的字串內使用跳脫問號 (??
) 已被棄用。由於 PDO_PGSQL 現在擁有自己的 SQL 解析器,並支援以美元符號括起的字串,因此不再需要在其中跳脫問號。
pg_fetch_result()、pg_field_prtlen() 和 pg_field_is_null() 的兩個參數簽章已被棄用。請改用三個參數簽章,並將 row
設為 null
。
lcg_value() 已被棄用,因為該函式在多方面都有問題。請改用 Random\Randomizer::getFloat()。
使用一個參數呼叫 ReflectionMethod::__construct() 已被棄用。請改用 ReflectionMethod::createFromMethodName()。
使用兩個以上參數呼叫 session_set_save_handler() 已被棄用。請改用兩個參數的簽章。
更改 session.sid_length
和 session.sid_bits_per_character
INI 設定的值已被棄用。請更新 Session 儲存後端以接受 32 個字元的十六進位 Session ID,並停止更改這兩個 INI 設定。
更改 session.use_only_cookies
、session.use_trans_sid
、session.trans_sid_tags
、session.trans_sid_hosts
和 session.referer_check
INI 設定的值已被棄用。SID
常數也已被棄用。
將 int 傳遞給 SoapServer::addFunction() 已被棄用。如果需要提供所有 PHP 函式,請扁平化 get_defined_functions() 返回的陣列。
SOAP_FUNCTIONS_ALL
常數已被棄用。
SplFixedArray::__wakeup() 方法已被棄用,因為它實作了 SplFixedArray::__serialize() 和 SplFixedArray::__unserialize(),而這些方法需要被覆寫。
使用 SplFileObject::setCsvControl()、SplFileObject::fputcsv() 和 SplFileObject::fgetcsv() 的 escape
參數的預設值已被棄用。必須透過位置參數或命名參數明確地傳遞它。如果已使用 SplFileObject::setCsvControl() 設定新的預設值,則此規則不適用於 SplFileObject::fputcsv() 和 SplFileObject::fgetcsv()。
使用兩個參數呼叫 stream_context_set_option() 已被棄用。請改用 stream_context_set_options()。
使用大寫 S
標籤搭配 unserialize() 反序列化字串已被棄用。
針對 fputcsv()、fgetcsv() 和 str_getcsv() 使用 escape
參數的預設值現已棄用。必須透過位置參數或命名參數明確傳遞。