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