if a $_SESSION['example'] variable has not been set before being used, PHP version 7.4 just returned false, PHP 8.0 throws a PHP Warning: Undefined array key "example"
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 da 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_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
e ENCHANT_ISPELL
estão
descontinuadas.
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.
A constante PGSQL_LIBPQ_VERSION_STR
agora tem o mesmo valor que
PGSQL_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:
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'];
}
?>
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.
if a $_SESSION['example'] variable has not been set before being used, PHP version 7.4 just returned false, PHP 8.0 throws a PHP Warning: Undefined array key "example"
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! ;)