"函数和方法调用中的尾随逗号现在允许"指的是函数参数,例如:
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析错误:语法错误
my1(,); // PHP 解析错误:语法错误
my1(1,); my2(2,); // 正确
?>
文档字符串的结束标记不再需要后面跟着分号或换行符。此外,结束标记可以缩进,在这种情况下,缩进将从文档字符串中的所有行中删除。
数组解构现在使用语法[&$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()现在也可以用作getter来检索当前使用的比例。
LDAP查询函数和ldap_parse_result()已添加对LDAP控件的完全支持。
$controls
参数,用于在ldap_add(),ldap_mod_replace(),ldap_mod_add(),ldap_mod_del(),ldap_rename(),ldap_compare(),ldap_delete(),ldap_modify_batch(),ldap_search(),ldap_list()和ldap_read()中向服务器发送控件。
$controls
,用于从ldap_parse_result()中的服务器获取控件。
LDAP_OPT_SERVER_CONTROLS
和LDAP_OPT_CLIENT_CONTROLS
的支持。
已添加对完全大小写映射和大小写折叠的支持。与简单大小写映射不同,完全大小写映射可能会更改字符串的长度。例如
<?php
mb_strtoupper("Straße");
// 在PHP 7.2上产生STRAßE
// 在PHP 7.3上产生STRASSE
?>
不区分大小写的字符串操作现在在比较期间使用大小写折叠而不是大小写映射。这意味着现在将考虑更多字符(不区分大小写)相等。
使用MB_CASE_TITLE
的mb_convert_case()现在基于Cased和CaseIgnorable派生的Unicode属性执行标题大小写转换。特别是,这还改进了对引号和撇号的处理。
已针对Unicode 11更新了多字节字符串数据表。
多字节字符串函数现在正确支持大于2GB的字符串。
多字节字符串扩展的性能已全面显著提高。最大的改进在于大小写转换函数。
mb_ereg_*
函数现在支持命名捕获。与PCRE类似,mb_ereg()之类的匹配函数现在将同时使用其组号和名称返回命名捕获。
<?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 的组号。
对 readline_info() 添加了对 completion_append_character
和 completion_suppress_append
选项的支持。只有当 PHP 链接到 libreadline (而不是 libedit) 时,这些选项才可用。
"函数和方法调用中的尾随逗号现在允许"指的是函数参数,例如:
<?php
function my1() {
echo "xxxxxx\n";
}
function my2() {
echo "yyyyyy\n";
}
my1(),my2(); // PHP 解析错误:语法错误
my1(,); // PHP 解析错误:语法错误
my1(1,); my2(2,); // 正确
?>