如果参数的默认值为 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 传递给
trigger_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() 函数之后的后续操作。
现已弃用向 dba_key_split() 传递 null 或
false。在这些情况下,该函数始终返回 false。
向哈希函数传递无效选项现已弃用。
使用超过两个参数调用 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 设置的值已被弃用。请更新会话存储后端以接受 32 个字符的十六进制会话 ID,并停止修改这两个 INI 设置。
修改
session.use_only_cookies、session.use_trans_sid、session.trans_sid_tags、session.trans_sid_hosts
和 session.referer_check
INI 设置的值已被弃用。SID 常量也已被弃用。
向 SoapServer::addFunction() 传递 int 现已弃用。如果需要提供所有 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()。
使用 unserialize() 反序列化带有大写 S
标签的字符串已被弃用。
对 fputcsv()、fgetcsv() 和
str_getcsv() 的 escape
参数使用默认值现已弃用。
必须通过位置参数或命名参数显式传递该值。