新功能

PHP 核心

只读修正

匿名类现在可以标记为 readonly。

只读属性现在可以在克隆时重新初始化。

类型化类常量

类、接口、trait 和 enum 常量现在支持类型声明。

从魔术方法中创建的闭包

从魔术方法中创建的闭包现在接受命名参数。

trait 中的方法使用 final 修饰符

final 修饰符现在可以用于 trait 中的方法。

Override 注解

新增 #[\Override] 注解用于检测方法是否在父类中存在或实现了接口。

动态语法获取类常量

类常量现在可以使用 C::{$name} 语法动态访问。

静态变量初始化

静态变量初始化现在可以包含任意表达式。

ini 变量的后备值语法

php.ini 现在支持后备/默认值语法。

<?php
/*
/path/to/user.ini 上包含下列设置:

listen = localhost:${DRUPAL_FPM_PORT:-9000}
*/

$user_ini = parse_ini_file('/path/to/user.ini');
echo
$user_ini['listen']; // localhost:9000

CLI

现在可以对多个文件进行 lint。

DOM

添加属性 DOMElement::$classNameDOMElement::$id。由于 libxml2 底层限制,这些属性目前并非二进制安全。这意味着属性值将在 NUL 字节处截断。

添加属性 DOMNode::$isConnectedDOMNameSpaceNode::$isConnected

添加属性 DOMNode::$parentElementDOMNameSpaceNode::$parentElement

FFI

现在可以将 FFI\CData 分配给其它 FFI\CData。这意味着现在可以将 CData 分配给结构和字段。

Opcache

opcache_get_status()['scripts'][n]['revalidate'] 现在包含 Unix 时间戳,表示下一次重新验证脚本时间戳的时间,由 opcache.revalidate_freq INI 指令指定。

POSIX

posix_getrlimit() 现在接受可选的 $resource 参数用于获取单个资源限制。

posix_isatty() 按照通用的 ZPP 语义现在对整数将引发类型警告。

posix_isposix_ttynameatty() 按照通用的 ZPP 语义现在对整数将引发类型警告,并针对无效整数文件描述符引发值警告。

Streams

Streams 现在可以发出 STREAM_NOTIFY_COMPLETED 通知。之前没有实现过。