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 precisa 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:

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.

adicione uma nota

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

up
0
al dot turani at gmail dot com
2 days ago
Another backward incompatible change, not mentioned in the docs, is that function `date_default_timezone_get()` no longer returns current time zone.

Prior to 8.2, this function returned:
- Time zone set by `date_default_timezone_set()` (if set).
- Time zone specified in `date.timezone` (if set).
- Current time zone, if none of above applies.

From 8.2 onward, if neither of the first two variants applies, this function returns UTC. This breaks scenarios where current time zone shall be used.

See <https://github.com/php/php-src/issues/11496> for discussion.
To Top