Php/docs/migration80.deprecated

来自菜鸟教程
跳转至:导航、​搜索

PHP 8.0 废弃的功能

PHP 核心中废弃的功能

  • 如果带有默认值的参数后面跟着一个必要的参数,那么默认值就会无效。这在 PHP 8.0.0 中已被废弃,通常可以通过删除默认值,不影响现有功能:

    <?phpfunction test($a = [], $b) {} // 之前function test($a, $b) {}      // 之后?>

    这条规则的一个例外是 Type $param = null 形式的参数,其中 null 的默认值使得类型隐式为空。这种用法仍然是允许的,但仍建议使用显式可空类型。

    <?phpfunction test(A $a = null, $b) {} // 旧写法,仍可用function test(?A $a, $b) {}       // 推荐写法?>

  • Calling get_defined_functions() with exclude_disabled explicitly set to false is deprecated and no longer has an effect. get_defined_functions() will never include disabled functions.


Enchant


LibXML

libxml_disable_entity_loader() has been deprecated. As libxml 2.9.0 is now required, external entity loading is guaranteed to be disabled by default, and this function is no longer needed to protect against XXE attacks.


PGSQL / PDO PGSQL


Standard Library

  • Sort comparison functions that return true or false will now throw a deprecation warning, and should be replaced with an implementation that returns an integer less than, equal to, or greater than zero.

    <?php// Replaceusort($array, fn($a, $b) => $a > $b);// Withusort($array, fn($a, $b) => $a <=> $b);?>


Zip

  • Using an empty file as ZipArchive is deprecated. Libzip 1.6.0 does not accept empty files as valid zip archives any longer. The existing workaround will be removed in the next version.

  • The procedural API of Zip is deprecated. Use ZipArchive instead. Iteration over all entries can be accomplished using ZipArchive::statIndex() and a for loop:

    <?php// iterate using the procedural APIassert(is_resource($zip));while ($entry = zip_read($zip)) {    echo zip_entry_name($entry);}// iterate using the object-oriented APIassert($zip instanceof ZipArchive);for ($i = 0; $entry = $zip->statIndex($i); $i++) {    echo $entry['name'];}?>


Reflection