已弃用功能

PHP 核心

在没有 __serialize()__unserialize() 的情况下实现 Serializable

如果未提供对 PHP 7.4 之前版本的支持,则应仅实现新的方法,或者应同时实现两者。

null 传递给内置函数的不可为空参数

内置函数的标量类型默认情况下是可为空的。此行为已弃用,以与用户定义函数的行为保持一致,在用户定义函数中,标量类型需要显式标记为可为空。

<?php
var_dump
(str_contains("foobar", null));
// 已弃用:将 null 传递给类型为字符串的参数 #2 ($needle)
// 已弃用
?>

隐式不兼容的 floatint 转换

现在已弃用导致精度损失的 floatint 的隐式转换。这会影响 array 键、强制模式下的 int 类型声明以及对 int 的操作。

<?php
$a
= [];
$a[15.5]; // 已弃用,因为键值丢失了 0.5 部分
$a[15.0]; // 正常,因为 15.0 == 15
?>

在特质上调用 static 元素

在特质上直接调用 static 方法或访问 static 属性已弃用。静态方法和属性只能在使用该特质的类上访问。

__sleep() 返回非 array

__sleep() 返回的值不是 array 现在会生成诊断信息。

void 函数返回引用

<?php
function &test(): void {}
?>
这样的函数是矛盾的,并且在调用时已经发出以下 E_NOTICEOnly variable references should be returned by reference

false 进行自动创建

自动创建是在追加到值时创建一个新的 array 的过程。自动创建禁止从标量值进行,但 false 却是一个例外。现在已弃用此功能。

<?php
$arr
= false;
$arr[] = 2; // 已弃用
?>

注意:

null 和未定义的值进行自动创建仍然允许

<?php
// 从未定义
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// 从 null
$arr = null;
$arr[] = 2;
?>

ctype

验证非字符串参数

传递非字符串参数已弃用。将来,该参数将被解释为字符串而不是 ASCII 代码点。根据预期行为,该参数应要么转换为 string,要么显式调用 chr()。所有 ctype_*() 函数都受影响。

日期

date_sunrise()date_sunset() 已被弃用,取而代之的是 date_sun_info()

strptime() 已被弃用。请改用 date_parse_from_format()(用于与区域设置无关的解析),或 IntlDateFormatter::parse()(用于与区域设置相关的解析)。

strftime()gmstrftime() 已被弃用。请改用 date()(用于与区域设置无关的格式化),或 IntlDateFormatter::format()(用于与区域设置相关的格式化)。

过滤器

FILTER_SANITIZE_STRINGFILTER_SANITIZE_STRIPPED 过滤器已弃用。

filter.default INI 指令已弃用。

GD

imagepolygon()imageopenpolygon()imagefilledpolygon()num_points 已被弃用。

哈希

mhash()mhash_keygen_s2k()mhash_count()mhash_get_block_size()mhash_get_hash_name() 已被弃用。请改用 hash_*() 函数。

IMAP

NIL 常量已弃用。请改用 0

Intl

使用 bool 参数调用 IntlCalendar::roll() 已弃用。请改用 1-1,而不是分别使用 truefalse

多字节字符串

在没有任何参数的情况下调用 mb_check_encoding() 已弃用。

MySQLi

mysqli_driver::$driver_version 属性已弃用。它没有意义且已过时,请改用 PHP_VERSION_ID

使用 mysqli 参数调用 mysqli::get_client_info()mysqli_get_client_info() 已弃用。在没有任何参数的情况下调用 mysqli_get_client_info() 以获取客户端库的版本信息。

mysqli::init() 方法已弃用。请将对 parent::init() 的调用替换为 parent::__construct()

OCI8

oci8.old_oci_close_semantics INI 指令已弃用。

ODBC

odbc_result_all() 已被弃用。

PDO

PDO::FETCH_SERIALIZE 提取模式已弃用。

PgSQL

对所有 pgsql_*() 函数不传递连接参数已弃用。

SOAP

SoapClient::__construct()ssl_method 选项已弃用,建议使用 SSL 流上下文选项。

标准

object 上调用 key()current()next()prev()reset()end() 已弃用。请先使用 get_mangled_object_vars()object 转换为 array,或者使用实现 Iterator 的类的提供的 方法,例如 ArrayIterator

auto_detect_line_endings INI 指令已弃用。如有必要,请手动处理 "\r" 换行符。

FILE_BINARYFILE_TEXT 常量已弃用。它们从未起过作用。

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top