“函数和方法调用中的尾随逗号现在允许”是指函数参数,例如
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析错误:语法错误
my1(,); // PHP 解析错误:语法错误
my1(1,); my2(2,); // 正常
?>
doc 字符串的结束标记不再需要紧跟分号或换行符。此外,结束标记可以缩进,在这种情况下,缩进将从 doc 字符串中的所有行中删除。
数组解构现在支持使用语法 [&$a, [$b, &$c]] = $d
进行引用赋值。对于 list() 也支持相同的语法。
instanceof
现在允许字面量作为第一个操作数,在这种情况下,结果始终为 false
。
添加了一个新的 CompileError 异常,ParseError 继承自它。现在,少量编译错误将抛出 CompileError 异常,而不是生成致命错误。目前,这仅影响 token_get_all() 在 TOKEN_PARSE
模式下可能抛出的编译错误,但将来可能会转换更多错误。
现在允许在函数和方法调用中使用尾随逗号。
--with-password-argon2[=dir] 配置参数现在在 password_hash()、password_verify()、password_get_info() 和 password_needs_rehash() 函数中提供对 Argon2i 和 Argon2id 哈希的支持。可以使用 PASSWORD_ARGON2ID
常量对密码进行哈希处理和验证。在 password_*() 函数中对 Argon2i 和 Argon2id 的支持现在需要 PHP 与 libargon2 参考库 ≥ 20161029 链接。
添加了新选项来自定义 FPM 日志记录
log_limit
log_buffering
decorate_workers_output
catch_workers_output
启用时,此池选项允许禁用对工作程序输出的输出装饰。
bcscale() 现在也可以用作获取器来检索当前使用的比例。
对 LDAP 控制的完全支持已添加到 LDAP 查询函数和 ldap_parse_result() 中
$controls
参数来将控制发送到服务器。
$controls
来从服务器获取控制。
LDAP_OPT_SERVER_CONTROLS
和 LDAP_OPT_CLIENT_CONTROLS
的支持。
添加了对全面大小写映射和大小写折叠的支持。与简单大小写映射不同,全面大小写映射可能会改变字符串的长度。例如
<?php
mb_strtoupper("Straße");
// 在 PHP 7.2 上产生 STRAßE
// 在 PHP 7.3 上产生 STRASSE
?>
不区分大小写的字符串操作现在在比较期间使用大小写折叠而不是大小写映射。这意味着现在将考虑更多字符(不区分大小写)相等。
mb_convert_case() 使用 MB_CASE_TITLE
现在根据 Cased 和 CaseIgnorable 派生的 Unicode 属性执行标题大小写转换。特别是,这也改进了对引号和撇号的处理。
多字节字符串 数据表已更新至 Unicode 11。
多字节字符串函数 现在正确支持大于 2GB 的字符串。
多字节字符串 扩展的性能已在各方面得到显著改进。最大的改进是在大小写转换函数中。
mb_ereg_*
函数现在支持命名捕获。与 mb_ereg() 类似的匹配函数现在将使用组号和名称返回命名捕获,类似于 PCRE
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
\k<>
和 \k''
符号来引用替换字符串中的命名捕获<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
和 \k''
也可用于编号引用,这也适用于大于 9 的组号。
对 completion_append_character
和 completion_suppress_append
选项的支持已添加到 readline_info()。这些选项仅在 PHP 与 libreadline(而不是 libedit)链接时可用。
“函数和方法调用中的尾随逗号现在允许”是指函数参数,例如
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析错误:语法错误
my1(,); // PHP 解析错误:语法错误
my1(1,); my2(2,); // 正常
?>