O tipo iterable agora é um apelido de tempo de compilação integrado para
array|Traversable.
As mensagens de erro relacionadas ao iterable
agora usarão
array|Traversable
.
Reflexão de tipo é preservada para iterable
único
(e ?iterable
) para produzir um
ReflectionNamedType com nome iterable
,
no entanto, o uso de iterable
em tipos de união
será convertido em array|Traversable
.
O formato da data dos cookies enviados agora é 'D, d M Y H:i:s \G\M\T'
;
anteriormente era 'D, d-M-Y H:i:s T'
.
Os fluxos STDOUT, STDERR e STDIN não são mais fechados na destruição de recursos, que ocorre principalmente quando a CLI termina. No entanto, ainda é possível fechar explicitamente esses fluxos usando fclose() e similares.
As funções strcmp(), strcasecmp(),
strncmp(), strncasecmp() e
substr_compare(), usando a comparação de string segura
binária não mais retornam garantidamente
strlen($string1) - strlen($string2)
quando os comprimentos das strings não forem
iguais, mas podem ao invés disso retornar -1
ou 1
.
Para não depender de nenhum valor concreto, o valor de retorno deve
ser comparado com 0
.
dba_open() e dba_popen() agora possuem a seguinte assinatura obrigatória:
$path
,$mode
,$handler
= null
,$permission
= 0644,$map_size
= 0,$flags
= null
O argumento opcional skip de dba_fetch()'s agora está no final de acordo com a semântica da área de usuário do PHP. Sua assinatura agora é:
A assinatura sobrecarregada: ainda é aceito, mas é recomendável usar a nova variante padrão.random_bytes() e random_int() agora lançam um \Random\RandomException em falhas de CSPRNG. Anteriormente, um \Exception simples era lançado.
O parâmetro iterator
de
iterator_to_array() e iterator_count()
é ampliado para iterable de Iterator,
permitindo que arrays sejam passados.
As propriedades de DatePeriod agora estão devidamente declaradas.
Instâncias de IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone, e Transliterator não são mais serializáveis. Anteriormente, eles podiam ser serializados, mas a desserialização produzia objetos inutilizáveis ou falhava.
O suporte para libmysql foi removido e não é mais possível compilar mysqli com libmysql. A partir de agora, a extensão mysqli pode ser compilada apenas com mysqlnd. Todos os recursos libmysql indisponíveis no mysqlnd foram removidos:
MYSQLI_IS_MARIADB
foi descontinuadaA versão mínima da biblioteca Oracle Client exigida agora é 11.2.
Caracteres NUL (\0
) em strings de expressão regular agora são suportados.
Tentar alterar a diretiva INI da session.cookie_samesite enquanto a sessão está ativa ou a saída já foi enviada falhará e emitirá um aviso. Isso alinha o comportamento com todas as outras configurações INI da sessão.
sqlite3.defensive
agora é INI_USER
.
getimagesize() agora relata as dimensões reais da imagem, bits e canais de imagens AVIF. Anteriormente, as dimensões eram relatadas como 0x0 e bits e canais não eram relatados.
As propriedades da classe tidy agora estão devidamente declaradas. E os da classe tidyNode agora são declarados corretamente como somente leitura.
A extensão Zip foi atualizada para a versão 1.20.0, que adiciona os seguintes métodos:
O suporte para prefixos binários (0b
/0B
) e octal
(0o
/0O
) foi adicionado às configurações INI de número inteiro.
As configurações INI de número inteiro que começam com zero (0
)
continuam a ser interpretadas como um número inteiro octal.
A análise de alguns valores mal formatados agora acionará um aviso quando isso foi silenciosamente ignorado antes. Para compatibilidade com versões anteriores, a interpretação desses valores não mudou. Isso afeta as seguintes configurações: