ウェブサイトなどで利用されているオープンソースのプログラミング言語・PHPのメジャーアップデート「PHP 8.0.0」がリリースされました。コードの実行時間短縮が見込める実行時コンパイラ(JIT)や複数の型に対応できるユニオン型など、多数の新機能が実装されています。
今回のメジャーアップデートによって一部後方互換性が失われており、軽微なコード修正が必要になる可能性があります。
https://www.php.net/releases/8.0/en.php
名前付き引数
関数やメソッド呼び出し時にどの引数にどの値を渡すのかを名前で指定できる名前付き引数が実装されました。これにより、必要な変数のみ指定し、不要な変数を省略することができます。
属性
PHPDocの代わりにPHP本来の構文でメタデータを記述し、ドキュメントを生成できるようになりました。
コンストラクタの記述テンプレート簡素化
コンストラクタのテンプレートをより簡単に記述することができるようになりました。
ユニオン型
複数の型の組み合わせに対応できるユニオン型が実装されました。
Match文
PHP 7まではSwitch-Case文で記述していた判定式を、より簡単に記述できるMatch文が導入されました。
Nullsafe演算子
「?」で変数をつなげることでチェーン全体のNull判定を行えるNullsafe演算子が導入されました。これにより、個別の変数に対してNull判定を行う必要がなくなります。
比較演算子の挙動変更
PHP 8では比較演算子の挙動が見直され、数値文字列を比較する際に数値比較を使用するようになりました。それ以外の場合は、数値を文字列に変換して文字列比較を使用します。
一貫した内部関数の型エラー
ほとんどの内部関数は、変数の検証に失敗した場合にエラー例外を返すようになりました。
JIT
PHP 8で新しく搭載された機能のひとつが、、頻繁に実行されるコードをコンパイルしておくことでプログラムの実行速度を向上させるJITです。PHP 8にはトレーシングJITと関数単位のJITの2種類のJITが組み込まれており、トレーシングJITを使った場合のパフォーマンスはJITなしの場合と比較してベンチマークでおよそ3倍、実行時間が長いアプリケーションでおよそ1.5~2倍となっています。