Alterações incompatíveis com versões anteriores
Data
DateTime::createFromImmutable() agora possui um tipo de retorno provisório static, que anteriormente era DateTime.
DateTimeImmutable::createFromMutable() agora possui um tipo de retorno provisório static, que anteriormente era DateTimeImmutable.
number
em relative formats
não mais aceita números com mais de um sinal, por exemplo +-2
.
ODBC
Agora a extensão ODBC escapa o nome de usuário e a senha quando ambos uma string de conexão e nome de usuário/senha são fornecidos e a string precise ser acrescentada. Antes, valores dados pelo usuário contendo valores que necessitassem ser escapados poderiam criar uma string de conexão malformada ou injetar valores a partir de dados providos pelo usuário. As regras de escape devem ser idênticas às do comportamento do DbConnectionOptions do .NET BCL.
PDO_ODBC
A extensão PDO_ODBC também escapa o nome de usuário e senha quando uma string de conexão é fornecida. Veja a mudança na extensão ODBC para mais informações.
Biblioteca Padrão
glob() agora devolve um array vazio se todos os caminhos forem
restringidos por open_basedir.
Anteriormente, o valor devolvido era false
.
Além disso, agora um aviso é emitido mesmo quando apenas alguns caminhos sejam restringidos por
open_basedir.
FilesystemIterator::__construct(): anteriormente ao PHP 8.2.0,
FilesystemIterator::SKIP_DOTS
sempre estava ativa e
não podia ser desativada. Para manter a preservar o comportamento anterior, a constante
deve ser informada explicitamente quanto utilizando o parâmetro flags
.
O valor padrão de flags
não foi modificado.
strtolower(),
strtoupper(),
stristr(),
stripos(),
strripos(),
lcfirst(),
ucfirst(),
ucwords(),
e str_ireplace() não são mais sensíveis à localização.
Elas agora realizam conversão de caixa em ASCII, como se a localização fosse "C".
Versões localizadas dessas funções estão disponíveis na extensão MBString.
Além disso, array_change_key_case() e ordenações com
SORT_FLAG_CASE
agora também usam conversão de caixa em ASCII.
str_split() agora devolve um array vazio para uma string vazia. Anteriormente era devolvido um array com uma única string vazia como elemento. mb_str_split() não é afetada por essa mudança, visto que tal função já se comportava dessa maneira.
ksort() e krsort() agora fazem comparação de string
numérica sob SORT_REGULAR
utilizando as regras de PHP 8 padrão.
var_export() deixou de omitir a contrabarra final em classes exportadas, ou seja, agora os nomes de classes estarão completamente qualificados.
Biblioteca Padrão do PHP (SPL)
Agora os seguintes métodos obrigam sua assinatura:
- SplFileInfo::_bad_state_ex()
- SplFileObject::getCsvControl()
- SplFileObject::fflush()
- SplFileObject::ftell()
- SplFileObject::fgetc()
- SplFileObject::fpassthru()
SplFileObject::hasChildren() agora possui um tipo de retorno provisório false, que anteriormente era bool.
SplFileObject::getChildren() agora possui um tipo de retorno provisório null, que anteriormente era ?RecursiveIterator.
GlobIterator agora devolve um array vazio se todos os
caminhos forem restringidos por open_basedir.
Anteriormente o valor devolvido era false
.
Além disso, agora um aviso é emitido mesmo quando apenas alguns caminhos sejam restringidos por
open_basedir.