如果参数的默认值为 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
使用 error_level
等于 E_USER_ERROR
调用 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() 的 2 个参数签名现已弃用。请改用带有 row
参数设置为 null
的 3 个参数签名。
lcg_value() 现已弃用,因为该函数存在多种问题。请改用 Random\Randomizer::getFloat()。
使用一个参数调用 ReflectionMethod::__construct() 现已弃用。请改用 ReflectionMethod::createFromMethodName()。
使用超过两个参数调用 session_set_save_handler() 现已弃用。请改用两个参数签名。
更改 session.sid_length
和 session.sid_bits_per-character
INI 设置的值现已弃用。请更新会话存储后端以接受 32 个字符的十六进制会话 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
参数的默认值现已弃用。必须显式地按位置或通过命名参数传递它。