PHP 8.4.1 Released!

Outras mudanças

Mudanças no Núcleo

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'.

Alterações nos Módulos SAPI

CLI

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.

Funções alteradas

Core

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

dba_open() e dba_popen() agora possuem a seguinte assinatura obrigatória:

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

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

dba_fetch(string|array $key, resource $handle, int $skip): string|false
A assinatura sobrecarregada:
dba_fetch(string|array $key, int $skip, resource $handle): string|false
ainda é aceito, mas é recomendável usar a nova variante padrão.

Random

random_bytes() e random_int() agora lançam um \Random\RandomException em falhas de CSPRNG. Anteriormente, um \Exception simples era lançado.

SPL

O parâmetro iterator de iterator_to_array() e iterator_count() é ampliado para iterable de Iterator, permitindo que arrays sejam passados.

Outras alterações nas extensões

Date

As propriedades de DatePeriod agora estão devidamente declaradas.

Intl

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.

MySQLi

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:

OCI8

A versão mínima da biblioteca Oracle Client exigida agora é 11.2.

PCRE

Caracteres NUL (\0) em strings de expressão regular agora são suportados.

Session

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

sqlite3.defensive agora é INI_USER.

Standard

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.

Tidy

As propriedades da classe tidy agora estão devidamente declaradas. E os da classe tidyNode agora são declarados corretamente como somente leitura.

Zip

A extensão Zip foi atualizada para a versão 1.20.0, que adiciona os seguintes métodos:

Alterações na manipulação de arquivos INI

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:

adicione uma nota

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

Não há notas de usuários para esta página.
To Top