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.

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

add a note

User Contributed Notes 1 note

up
0
dominique dot vienne at ik dot me
4 years ago
If you try to get all methods / functions assigning an optional argument before a mandatory one, try this regex (single line)

<?php
function\s+[a-z][a-zA-Z0-9_]*\((?:\$[a-z][a-zA-Z0-9]*\s*,\s*)*
(?:\$[a-z][A-Za-z0-9_]*\s*=[^\$\)]+)+\$[a-z][a-zA-Z0-9_]*\)
?>

for
<?php
public function test($a, $b) {
$a = [];
$b = [$abc => $ss[],
];
}

private function too($c, $a = true, $b) {
}

protected function bar($a = []) {
}

public function foo($a, $b = true) {
} 

public function fooBar32($a=true, $b = [], $c) {
}

private function oo_bAr($a = []) {
}
?>
it will match too() and fooBar32() 

Have a nice migration! ;)
To Top