新機能
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
が発生させられるようになりました。