## 新功能

### 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::$className 和 DOMElement::$id。由于 libxml2 底层限制，这些属性目前并非二进制安全。这意味着属性值将在 NUL 字节处截断。

添加属性 DOMNode::$isConnected 和 DOMNameSpaceNode::$isConnected。

添加属性 DOMNode::$parentElement 和 DOMNameSpaceNode::$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` 通知。之前没有实现过。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open