与二进制和十六进制整数字面量类似,八进制整数现在可以在整数字面量中使用显式的0o
/0O
前缀。
<?php
014; // 无前缀八进制字面量
0o14; // 带前缀的八进制字面量
?>
添加了对使用字符串键解包数组的支持。
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>
现在可以在参数解包后指定命名参数。例如 foo(...$args, named: $arg)。
文件上传现在提供了一个额外的full_path
键,其中包含上传文件的完整路径(而不仅仅是基本名称)。这旨在与“upload webkitdirectory”结合使用。
已添加对枚举的支持。
已添加对纤程的支持。
已添加对readonly的支持。
添加了对类常量的final修饰符的支持。此外,接口常量默认情况下可被覆盖。
添加了CURLOPT_DOH_URL
选项。
当 libcurl >= 7.71.0 时添加了 blob 证书选项
CURLOPT_ISSUERCERT_BLOB
CURLOPT_PROXY_ISSUERCERT
CURLOPT_PROXY_ISSUERCERT_BLOB
CURLOPT_PROXY_SSLCERT_BLOB
CURLOPT_PROXY_SSLKEY_BLOB
CURLOPT_SSLCERT_BLOB
CURLOPT_SSLKEY_BLOB
添加了CURLStringFile,它可以用于从字符串而不是文件发布文件
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>
添加了 openmetrics 状态格式。Prometheus 可以使用它来获取 FPM 指标。
为名为pm.max_spawn_rate
的动态进程管理器添加了新的池选项。当选择动态 pm 时,它允许以更快的速度启动一定数量的子进程。默认值为32
,这是之前硬编码的值。
如果 libgd 已使用 Avif 支持构建,则现在可以通过imagecreatefromavif()和imageavif()使用 Avif 支持。
以下函数hash()、hash_file()和hash_init()现在支持一个额外的可选options
参数,可用于传递特定于算法的数据。
添加了对MurmurHash3
的支持,并支持流式传输。实现了以下变体
初始哈希状态可以通过options
数组中的seed
键传递,例如
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
0
到平台定义的UINT_MAX
(通常为4294967295
)的范围内。
添加了对xxHash
的支持。实现了以下变体
初始哈希状态可以通过options
数组中的seed
键传递,例如
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
options
数组中传递secret
键,也支持秘密使用<?php
$h = hash("xxh3", $data, options: ["secret" => "至少 136 字节长的密钥在此处"]);
echo $h, "\n";
?>
mysqli.local_infile_directory
已添加 mysqli.local_infile_directory INI 指令,可用于指定允许加载文件的目录。只有在未启用 mysqli.allow_local_infile 时,此指令才有意义,因为在这种情况下,所有目录都是允许的。
现在可以通过将参数作为数组传递给 mysqli_stmt::execute() 来绑定参数。所有值都将绑定为字符串。仅允许列表数组。当 MySQLi 使用 libmysqlclient 编译时,此新功能不可用。
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
已添加 mysqli_result::fetch_column() 以允许从结果集中获取单个标量值。新方法接受一个可选的基于 0 的 column
参数,类型为 int,指定要从中获取的列。
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
已添加 PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
属性,可用于指定允许加载文件的目录。只有在未启用 PDO::MYSQL_ATTR_LOCAL_INFILE
时,此属性才有意义,因为在这种情况下,所有目录都是允许的。
现在支持 SQLite 的 "file:"
DSN 语法,允许指定其他标志。如果设置了 open_basedir,则此功能不可用。
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
添加了 POSIX_RLIMIT_KQUEUES
和 POSIX_RLIMIT_NPTS
。这些 rlimit 仅在 FreeBSD 上可用。
fputcsv() 现在接受一个新的 eol
参数,允许定义自定义换行符序列,默认值保持不变,为 "\n"
。
SplFileObject::fputcsv() 现在接受一个新的 eol
参数,允许定义自定义换行符序列,默认值保持不变,为 "\n"
。