如果带有默认值的参数后面跟着一个必要的参数,那么默认值就会无效。这在 PHP 8.0.0 中已被废弃,通常可以通过删除默认值,不影响现有功能:
<?php
function test($a = [], $b) {} // 之前
function test($a, $b) {} // 之后
?>
这条规则的一个例外是 Type $param = null
形式的参数,其中 null
的默认值使得类型隐式为空。这种用法仍然是允许的,但仍建议使用显式可空类型。
<?php
function test(A $a = null, $b) {} // 旧写法,仍可用
function test(?A $a, $b) {} // 推荐写法
?>
参数 exclude_disabled
不能设置为 false
来调用 get_defined_functions(),该参数已被废弃,不再起作用。
get_defined_functions() 绝不会再包含禁用的函数。
弃用 enchant_broker_set_dict_path() 和 enchant_broker_get_dict_path() ,因为此功能在 libenchant < 1.5 和 libenchant-2 中均不可用。
弃用 enchant_dict_is_in_session(),使用 enchant_dict_is_added() 替代。
弃用 enchant_broker_free() 和 enchant_broker_free_dict(),取而代之的是取消对象。
弃用 ENCHANT_MYSPELL
和 ENCHANT_ISPELL
常量。
弃用 libxml_disable_entity_loader()。由于现在需要 libxml
2.9.0,默认情况下会禁用外部实体加载并且不再需要此函数来防止 XXE 攻击,除非使用(仍然易受攻击的)
LIBXML_NOENT
。在这种情况下,建议使用
libxml_set_external_entity_loader() 重构代码以抑制外部实体加载。
现在常量 PGSQL_LIBPQ_VERSION_STR
的值与
PGSQL_LIBPQ_VERSION
相同,因此废弃。
pgsql 扩展中的函数别名已废弃。请参阅以下列表了解应该使用那些函数:
弃用使用空文件作为 ZipArchive。Libzip 1.6.0 不再接受空文件作为有效的 zip 归档。现有的解决方案将在下个版本删除。
弃用面向过程的 Zip API。使用 ZipArchive 替代。可以使用 ZipArchive::statIndex() 和 for 循环完成对所有条目的迭代:
<?php
// 使用面向过程 API 进行迭代
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// 使用面向对象 API 进行迭代
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>
弃用 ReflectionFunction::isDisabled(),因为不可能再为禁用的函数创建
ReflectionFunction。此方法现在总是返回 false
。
弃用 ReflectionParameter::getClass()、 ReflectionParameter::isArray()、 ReflectionParameter::isCallable()。 应该使用 ReflectionParameter::getType() 和 ReflectionType API 替代。