2024年PHP开发者大会日本站

新特性

PHP核心

更灵活的Heredoc和Nowdoc语法

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

数组解构支持引用赋值

数组解构现在使用语法[&$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()现在也可以用作getter来检索当前使用的比例。

轻量级目录访问协议

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

多字节字符串函数

完全大小写映射和大小写折叠支持

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

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

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

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

MB_CASE_TITLE执行标题大小写转换

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

Unicode 11支持

已针对Unicode 11更新了多字节字符串数据表。

长字符串支持

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

性能改进

多字节字符串扩展的性能已全面显著提高。最大的改进在于大小写转换函数。

命名捕获支持

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

<?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 (命令行读取)

readline_info() 添加了对 completion_append_charactercompletion_suppress_append 选项的支持。只有当 PHP 链接到 libreadline (而不是 libedit) 时,这些选项才可用。

添加注释

用户贡献的笔记 1 条笔记

9
[email protected]
5 年前
"函数和方法调用中的尾随逗号现在允许"指的是函数参数,例如:

<?php

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

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

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

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

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

?>
To Top