PHP 8.4.0 RC4 available for testing

Recursos descontinuados

PHP Core

  • Se um parâmetro com um valor padrão é seguido por um parâmetro obrigatório, o valor padrão não tem efeito. Essa funcionalidade está descontinuada a partir do PHP 8.0.0 e geralmente pode ser resolvido eliminando o valor padrão, sem mudança na funcionalidade:

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

    Uma exceção à esta regra são os parâmetros escritos de seguinte forma: Type $param = null, onde o valor padrão nulo torna o tipo implicitamente anulável. Este uso continua permitido, mas é recomendado o uso de um tipo anulável explícito:

    <?php
    function test(A $a = null, $b) {} // Ainda é permitido
    function test(?A $a, $b) {} // Recomendável
    ?>

  • Chamar a função get_defined_functions() com o parâmetro exclude_disabled definido explicitamente como false está descontinuado e não tem mais efeito. A função get_defined_functions() nunca incluirá funções desabilitadas.

Enchant

LibXML

A função libxml_disable_entity_loader() foi descontinuada. Como a libxml 2.9.0 agora é obrigatória, o carregamento de entidade externa está desabilitado por padrão, e esta função não é mais necessária para a proteção contra ataques XXE, a não ser que a (ainda vulnerável). LIBXML_NOENT for utilizada. Nesse caso, é recomendado refazer o código utilizando libxml_set_external_entity_loader() para suprimir o carregamento de entidades externas.

PGSQL / PDO PGSQL

Biblioteca Padrão

  • Funções sort que retornam true ou false agora lançam um aviso de descontinuação, e deve ser substituído por uma implementação que retorna um número inteiro menor, igual ou maior que zero.

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

Zip

  • Usar um arquivo vazio como ZipArchive está descontinuado. A Libzip 1.6.0 não aceita mais arquivos vazios como arquivos zip válidos. A solução alternativa existente será removida na próxima versão.

  • A API procedural do Zip está descontinuada. Use ZipArchive em seu lugar. A iteração em todas as entradas pode ser realizada usando ZipArchive::statIndex() e um laço for:

    <?php
    // iterar usando a API procedural
    assert(is_resource($zip));
    while (
    $entry = zip_read($zip)) {
    echo
    zip_entry_name($entry);
    }

    // iterar usando a API orientada a objetos
    assert($zip instanceof ZipArchive);
    for (
    $i = 0; $entry = $zip->statIndex($i); $i++) {
    echo
    $entry['name'];
    }
    ?>

Reflection

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
12
dominique dot vienne at ik dot me
3 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