Funcionalidades obsoletas

Núcleo PHP

  • Si un parámetro con un valor predeterminado es seguido por un parámetro obligatorio, el valor predeterminado no tiene efecto. Esto está obsoleto a partir de PHP 8.0.0 y generalmente puede resolverse eliminando el valor predeterminado, sin cambiar la funcionalidad:

    <?php
    function test($a = [], $b) {} // Before
    function test($a, $b) {} // After
    ?>

    Una excepción a esta regla son los parámetros de la forma Type $param = null, donde el valor predeterminado null hace que el tipo sea implícitamente nullable. Este uso sigue estando permitido, pero se recomienda usar un tipo nullable explícito en su lugar:

    <?php
    function test(A $a = null, $b) {} // Still allowed
    function test(?A $a, $b) {} // Recommended
    ?>

  • Llamar a get_defined_functions() con exclude_disabled establecido explícitamente a false está obsoleto y ya no tiene efecto. get_defined_functions() nunca incluirá funciones deshabilitadas.

Enchant

LibXML

libxml_disable_entity_loader() ha sido desaprobada. Como ahora se requiere libxml 2.9.0, la carga de entidades externas está garantizada como deshabilitada por defecto, y esta función ya no es necesaria para proteger contra ataques XXE, a menos que se utilice LIBXML_NOENT. En ese caso, se recomienda refactorizar el código usando libxml_set_external_entity_loader() para suprimir la carga de entidades externas.

PGSQL / PDO PGSQL

Biblioteca estándar

  • Las funciones de comparación para ordenamiento que devuelven true o false ahora emitirán una advertencia de obsolescencia, y deberían ser reemplazadas por una implementación que devuelva un entero menor, igual o mayor que cero.

    <?php
    // Replace
    usort($array, fn($a, $b) => $a > $b);
    // With
    usort($array, fn($a, $b) => $a <=> $b);
    ?>

Zip

  • El uso de un archivo vacío como ZipArchive está obsoleto. Libzip 1.6.0 ya no acepta archivos vacíos como archivos zip válidos. La solución alternativa existente será eliminada en la próxima versión.

  • La API procedural de Zip está obsoleta. Use ZipArchive en su lugar. La iteración sobre todas las entradas puede realizarse usando ZipArchive::statIndex() y un bucle for:

    <?php
    // iterate using the procedural API
    assert(is_resource($zip));
    while (
    $entry = zip_read($zip)) {
    echo
    zip_entry_name($entry);
    }

    // iterate using the object-oriented API
    assert($zip instanceof ZipArchive);
    for (
    $i = 0; $entry = $zip->statIndex($i); $i++) {
    echo
    $entry['name'];
    }
    ?>

Reflexión