はじめに
PHPは、この11月にバージョン8.5となりました。前バージョンである8.4からほぼ1年ぶりのリリースになります。PHPは、導入のしやすさと使い勝手の良さでリリース当時から人気があり、バージョンアップのたびに洗練と使い勝手の向上を目指した機能が多数実装され、改良されています。本連載ではPHPの最新バージョンにフォーカスし、その強化・変更ポイントを紹介していきます。
| 分類 | 機能 | 概要 |
|---|---|---|
| 言語仕様 | パイプ演算子 | 関数のネストを左から順に書けるように |
| クローン時のプロパティ設定 | プロパティを更新しつつcloneできるように | |
| finalプロパティプロモーション | コンストラクタ引数でfinalが利用可能に | |
| 定数のアトリビュート | コンパイル時定数にアトリビュートを指定できるように | |
| 静的プロパティの非対称な可視性 | 静的プロパティの読み出しと書き込みに異なる可視性を指定できるように | |
| NoDiscardアトリビュート | 重要な戻り値をマーキングできるように | |
| 定数式内のクロージャ | 定数式にクロージャを記述できるように | |
| トレイトへのDeprecatedアトリビュート | トレイトについて廃止をマーキングできるように | |
| FILTER_THROW_ON_FAILURE | filter_var関数などに失敗したらエラーになるオプションFILTER_THROW_ON_FAILUREを渡せるように | |
| プロパティのOverrideアトリビュート | プロパティにオーバーライドをマーキングできるように | |
| DelayedTargetValidationアトリビュート | アトリビュートのコンパイル時エラーを実行時エラーに変更できるように | |
| 関数 | array_first関数とarray_last関数 | 配列の最初と最後の値を取得できるように |
| grapheme_levenshtein関数 | 書記素クラスタにおけるレーベンシュタイン距離を計算できるように | |
| 書記素関数にロケールを追加 | 大文字と小文字を区別しない書記素関数にロケールを追加できるように | |
| get_error_handler関数とget_exception_handler関数 | エラーハンドラ・例外ハンドラが取得できるように | |
| curl_share_init_persistent関数 | リクエストを超えてcurlハンドルを共有できるように | |
| RFC3986/WHATWG標準準拠のURL API | RFC3986に基いたURIを正しく扱えるように | |
| CHIPSのためのsetcookie関数 | CHIPS(Cookies Having Independent Partitioned State)に対応するオプションpartitionedを追加できるように | |
| 処理系 | 致命的エラーのバックトレース | 致命的エラーがバックトレースを表示するように |
| Directoryクラスのリソースオブジェクト化 | Directoryクラスを完全不透明クラスとして取り扱うように | |
| OPcacheの非オプション化 | OPcacheを常にロードすることで高速化が可能に |
対象読者
- PHPの最新バージョンの機能を把握したい方
- PHPの経験者で、PHPに改めて入門したい方
- プログラミング言語の最新パラダイムに関心のある方
必要な環境
本記事のサンプルコードは、以下の環境で動作を確認しています。
-
macOS Sequoia
- PHP(8.5.0)
- Visual Studio Code 1.106.1(PHP Intelephense 1.16.1)
[NOTE]サンプルの実行
掲載サンプルは、それぞれの.phpファイルに記述されています。動作確認は、PHP 8.5.0をHomebrewでインストールしたmacOS上で、拡張機能「PHP Intelephense」をインストールしたVSCode(Visual Studio Code)のデバッグコンソールに出力させることで行っています。
