## 新機能

### PHP コア

#### readonly 機能の修正

無名クラスも、readonly としてマークできるようになりました。

読み取り専用プロパティは、clone している間に再初期化できるようになりました。

#### クラス定数に対する型宣言

クラス、インターフェイス、トレイト、そして列挙型の定数は、新たに型宣言をサポートするようになりました。

#### マジックメソッドで作ったクロージャ

マジックメソッドで作ったクロージャは、名前付き引数を受け入れるようになりました。

#### トレイトのメソッドに対する final 指定

トレイトからメソッドを使う場合に、そのメソッドに対して final を指定できるようになりました。

#### Override アトリビュート

親クラスまたは実装済みのインターフェイス内で、メソッドが存在するかを調べるアトリビュートとして、#[\Override] が追加されました。

#### クラス定数への動的なアクセス構文

クラス定数は、`C::{$name}` という構文で動的にアクセスできるようになりました。

#### static 変数の初期化

static 変数を初期化する際に、任意の式が使えるようになりました。

#### INI 変数に対するデフォルト値指定

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

複数のファイルの文法チェックを、一度にできるようになりました。

### 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 によって決まります。

### POSIX

posix_getrlimit() で、リソースの制限値をひとつ取得できる、オプションの `$resource` パラメータが使えるようになりました。

posix_isatty() は、通常のパラメータ解釈のセマンティクス(ZPP) に従い、整数値に対して警告を発生させるようになりました。

posix_ttyname() は、通常のパラメータ解釈のセマンティクス(ZPP) に従い、整数値に対して警告を発生させるようになりました。さらに、無効なファイルディスクリプタの整数値に対しても、警告を発生させるようになっています。

### Streams

以前のバージョンでは実装されていなかった新しい通知として、`STREAM_NOTIFY_COMPLETED` が発生させられるようになりました。

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