新特性

PHP 内核

更灵活的 Heredoc 和 Nowdoc 语法

doc 字符串的结束标记不再需要紧跟分号或换行符。此外,结束标记可以缩进,在这种情况下,缩进将从 doc 字符串中的所有行中删除。

数组解构支持引用赋值

数组解构现在支持使用语法 [&$a, [$b, &$c]] = $d 进行引用赋值。对于 list() 也支持相同的语法。

instanceof 运算符接受字面量

instanceof 现在允许字面量作为第一个操作数,在这种情况下,结果始终为 false

CompileError 异常代替某些编译错误

添加了一个新的 CompileError 异常,ParseError 继承自它。现在,少量编译错误将抛出 CompileError 异常,而不是生成致命错误。目前,这仅影响 token_get_all()TOKEN_PARSE 模式下可能抛出的编译错误,但将来可能会转换更多错误。

调用中允许尾随逗号

现在允许在函数和方法调用中使用尾随逗号。

Argon2id 支持

--with-password-argon2[=dir] 配置参数现在在 password_hash()password_verify()password_get_info()password_needs_rehash() 函数中提供对 Argon2i 和 Argon2id 哈希的支持。可以使用 PASSWORD_ARGON2ID 常量对密码进行哈希处理和验证。在 password_*() 函数中对 Argon2i 和 Argon2id 的支持现在需要 PHP 与 libargon2 参考库 ≥ 20161029 链接。

FastCGI 进程管理器

添加了新选项来自定义 FPM 日志记录

log_limit
此全局选项可用于设置已记录行的日志限制,从而允许记录长度超过 1024 个字符的消息,而不会换行。它还修复了各种换行问题。
log_buffering
此全局选项允许进行实验性日志记录,而无需额外的缓冲。
decorate_workers_output
catch_workers_output 启用时,此池选项允许禁用对工作程序输出的输出装饰。

BC Math 函数

bcscale() 现在也可以用作获取器来检索当前使用的比例。

轻量级目录访问协议

对 LDAP 控制的完全支持已添加到 LDAP 查询函数和 ldap_parse_result()

多字节字符串函数

全面的大小写映射和大小写折叠支持

添加了对全面大小写映射和大小写折叠的支持。与简单大小写映射不同,全面大小写映射可能会改变字符串的长度。例如

<?php
mb_strtoupper
("Straße");
// 在 PHP 7.2 上产生 STRAßE
// 在 PHP 7.3 上产生 STRASSE
?>
不同的大小写映射和折叠模式可以通过 mb_convert_case() 使用仅执行无条件的、与语言无关的全面大小写映射。

不区分大小写的字符串操作使用大小写折叠

不区分大小写的字符串操作现在在比较期间使用大小写折叠而不是大小写映射。这意味着现在将考虑更多字符(不区分大小写)相等。

MB_CASE_TITLE 执行标题大小写转换

mb_convert_case() 使用 MB_CASE_TITLE 现在根据 Cased 和 CaseIgnorable 派生的 Unicode 属性执行标题大小写转换。特别是,这也改进了对引号和撇号的处理。

Unicode 11 支持

多字节字符串 数据表已更新至 Unicode 11。

长字符串支持

多字节字符串函数 现在正确支持大于 2GB 的字符串。

性能改进

多字节字符串 扩展的性能已在各方面得到显著改进。最大的改进是在大小写转换函数中。

命名捕获支持

mb_ereg_* 函数现在支持命名捕获。与 mb_ereg() 类似的匹配函数现在将使用组号和名称返回命名捕获,类似于 PCRE

<?php
mb_ereg
('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
此外,mb_ereg_replace() 现在支持 \k<>\k'' 符号来引用替换字符串中的命名捕获
<?php
mb_ereg_replace
('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>\k'' 也可用于编号引用,这也适用于大于 9 的组号。

Readline

completion_append_charactercompletion_suppress_append 选项的支持已添加到 readline_info()。这些选项仅在 PHP 与 libreadline(而不是 libedit)链接时可用。

添加备注

用户贡献说明 1 个说明

yoander dot valdes at yahoo dot com
5 年前
“函数和方法调用中的尾随逗号现在允许”是指函数参数,例如

<?php

function my1() {
echo
"xxxxxx\n";
}

function
my2() {
echo
"yyyyyy\n";
}

my1(),my2(); // PHP 解析错误:语法错误

my1(,); // PHP 解析错误:语法错误

my1(1,); my2(2,); // 正常

?>
To Top