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 comofalse
está descontinuado e não tem mais efeito. A função get_defined_functions() nunca incluirá funções desabilitadas.
Enchant
-
enchant_broker_set_dict_path() e enchant_broker_get_dict_path() estão descontinuadas, porque essa funcionalidade não está disponível no libenchant < 1.5 nem na libenchant-2.
-
enchant_dict_add_to_personal() está descontinuada; use enchant_dict_add() em seu lugar.
-
enchant_dict_is_in_session() está descontinuada; use enchant_dict_is_added() em seu lugar.
-
enchant_broker_free() e enchant_broker_free_dict() estão descontinuadas; em vez disso destrua/unset o objeto.
-
As constantes
ENCHANT_MYSPELL
eENCHANT_ISPELL
estão descontinuadas.
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
-
A constante
PGSQL_LIBPQ_VERSION_STR
agora tem o mesmo valor quePGSQL_LIBPQ_VERSION
, portanto, está descontinuada. -
Os apelidos de função na extensão pgsql foram descontinuados. Consulte a lista abaixo para saber quais funções devem ser usadas em seu lugar:
- pg_errormessage() → pg_last_error()
- pg_numrows() → pg_num_rows()
- pg_numfields() → pg_num_fields()
- pg_cmdtuples() → pg_affected_rows()
- pg_fieldname() → pg_field_name()
- pg_fieldsize() → pg_field_size()
- pg_fieldtype() → pg_field_type()
- pg_fieldnum() → pg_field_num()
- pg_result() → pg_fetch_result()
- pg_fieldprtlen() → pg_field_prtlen()
- pg_fieldisnull() → pg_field_is_null()
- pg_freeresult() → pg_free_result()
- pg_getlastoid() → pg_last_oid()
- pg_locreate() → pg_lo_create()
- pg_lounlink() → pg_lo_unlink()
- pg_loopen() → pg_lo_open()
- pg_loclose() → pg_lo_close()
- pg_loread() → pg_lo_read()
- pg_lowrite() → pg_lo_write()
- pg_loreadall() → pg_lo_read_all()
- pg_loimport() → pg_lo_import()
- pg_loexport() → pg_lo_export()
- pg_setclientencoding() → pg_set_client_encoding()
- pg_clientencoding() -> pg_client_encoding()
Biblioteca Padrão
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
-
O método ReflectionFunction::isDisabled() está descontinuado, pois não é mais possível criar uma classe ReflectionFunction para uma função desativada. Este método agora sempre retorna
false
. -
ReflectionParameter::getClass(), ReflectionParameter::isArray(), e ReflectionParameter::isCallable() estão descontinuados. ReflectionParameter::getType() e ReflectionType devem ser usados em seu lugar.