八进制整数现在可以使用显式的 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”一起使用。
添加了对 枚举 的支持。
添加了对 纤程 的支持。
可调用函数的闭包现在可以使用 语法 myFunc(...)
创建,它与 Closure::fromCallable('myFunc')
相同。
注意:
...
是语法的一部分,而不是省略。
添加了对 只读 的支持。
添加了对 类常量的 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,它可以用来从 string 而不是文件发布文件
<?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"
。