Inteiros octais agora podem usar um prefixo
0o
/0O
explícito em inteiros literais,
similar à inteiros literais binários e hexadecimais.
<?php
014; // Literal octal não-prefixado
0o14; // Literal octal prefixado
?>
Adicionado suporte para desmontagem de arrays com chave string
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>
Agora é possível especificar argumentos nomeados após um desempacotamento de argumentos. ex. foo(...$args, nomeado: $arg).
Upload de arquivos agora fornece uma chave adicional full_path
,
que contém o caminho completo (em vez de apenas o nome base) do arquivo carregado.
Isso destina-se ao uso em conjunto com "upload webkitdirectory".
Suporte para Enumerações foi adicionado.
Suporte para Fibers foi adicionado.
Closures para callables agora podem ser criadas usando a sintaxe myFunc(...)
,
que é idêntica a Closure::fromCallable('myFunc')
.
Nota: O
...
é parte da sintaxe, e não uma omissão.
Suporte a tipos de intersecção foi adicionado.
Tipos de Intersecção não podem ser usados em conjunto com tipos de união
Um novo tipo never de retorno apenas foi adicionado. Isso indica que a função exit(), lança uma exceção, ou não termina.
new
em Inicializadores
Agora é possível usar expressões new ClassName()
como o
valor padrão de um parâmetro, variável estática, inicializadores de constante global,
e como argumentos de atributo.
Objetos também podem ser passados para define() agora.
Suporte para propriedades readonly foi adicionado.
Adicionado suporte ao modificador final para constantes de classe. Além disso, as constantes de interface podem ser sobreescritas.
Adicionada a opção CURLOPT_DOH_URL
.
Adicionadas opções para certificado blob quando libcurl >= 7.71.0:
CURLOPT_ISSUERCERT_BLOB
CURLOPT_PROXY_ISSUERCERT
CURLOPT_PROXY_ISSUERCERT_BLOB
CURLOPT_PROXY_SSLCERT_BLOB
CURLOPT_PROXY_SSLKEY_BLOB
CURLOPT_SSLCERT_BLOB
CURLOPT_SSLKEY_BLOB
Adicionada CURLStringFile, que pode ser usada para postar um arquivo a partir de uma string em vez de um arquivo:
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>
Adicionado status de formato openmetrics. Ele pode ser usado pelo Prometheus para buscar métricas do FPM.
Adicionada nova opção de pool para o gerenciador de processo dinâmico chamada
pm.max_spawn_rate
. Ela permite iniciar uma séria de filhos
em um ritmo mais rápido quando pm dinâmico está selecionado.
O valor padrão é 32
que era o valor
codificado anterior.
Suporte Avif agora está disponível através de imagecreatefromavif() e imageavif(), se a libgd foi compilada com suporte Avif.
As seguintes funções hash(),
hash_file(), e hash_init()
agora suportam um argumento opcional options
adicional, que pode ser utilizado para passar dados específicos do algoritmo.
Adicionado suporte a MurmurHash3
com porte A
streaming. As seguintes variantes estão implementadas:
O estado de hash inicial pode ser passado através da chave seed
no array options
, por exemplo:
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
0
até o UINT_MAX
definido pela plataforma, geralmente
4294967295
.
Adicionado suporte a xxHash
.
As seguintes variantes estão implementadas:
O estado inicial de hash pode ser passado através da chave seed
no array options
, por exemplo:
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
secret
no array options
, também:
<?php
$h = hash("xxh3", $data, options: ["secret" => "Segredo de pelo menos 136 bytes aqui"]);
echo $h, "\n";
?>
mysqli.local_infile_directory
A diretiva INI mysqli.local_infile_directory foi adicionada, que pode ser usada para especificar um diretório a partir do qual os arquivos podem ser carregados. Só é significativo se mysqli.allow_local_infile não estiver habilitada, já que todos os diretórios são permitidos nesse caso.
Agora é possível ligar parâmetros passando-os como um array para o mysqli_stmt::execute(). Todos os valores serão ligados como strings. Apenas arrays de lista são permitidos. Essa nova funcionalidade não está disponível quando MySQLi é compilado com libmysqlclient.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
mysqli_result::fetch_column()
foi adicionado para permitir buscar um único valor escalar do conjunto de resultados.
O novo método aceita um parâmetro opcional baseado em 0 column
do tipo int especificando de qual coluna buscar.
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
O atributo PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
foi adicionado, que pode ser usado para especificar um diretório no qual os
arquivos podem ser carregados.
É significante apenas se PDO::MYSQL_ATTR_LOCAL_INFILE
não estiver habilitada, já que todos os diretórios são permitidos nesse caso.
A sintaxe DSN "file:"
do SQLite agora é suportada,
que permite especificar flags adicionais.
Essa funcionalidade não está disponível se open_basedir estiver definido.
<?php
new PDO('sqlite:file:caminho/para/sqlite.db?mode=ro')
?>
Adicionadas POSIX_RLIMIT_KQUEUES
and POSIX_RLIMIT_NPTS
.
Esses rlimits estão disponíveis apenas no FreeBSD.
fputcsv() agora aceita um novo argumento
eol
que permite a definição de uma sequência de
fim de linha personalizada, o padrão continua o mesmo e é "\n"
.
SplFileObject::fputcsv() agora aceita um novo argumento
eol
que permite a definição de uma sequência de
fim de linha personalizada, o padrão continua o mesmo e é "\n"
.