はじめに
PHPは、2024年11月にバージョン8.4となりました。前バージョンである8.3からほぼ1年ぶりのリリースになります。PHPは、導入のしやすさと使い勝手の良さでリリース当時から人気があり、バージョンアップのたびに洗練され、使い勝手の向上を目指した機能が多数実装され、改良されています。本連載ではPHPの最新バージョンにフォーカスし、その強化・変更ポイントを紹介していきます。
分類 | 機能 | 概要 |
---|---|---|
クラス定義 | プロパティフック | プロパティに直接ゲッタ/セッタを記述できるように(とパフォーマンスの改善) |
非対称可視性 | ゲッタとセッタに異なる可視性を指定可能に | |
遅延初期化 | 必要時にインスタンス化を実行するように | |
言語仕様 | 非推奨属性 | 関数、メソッド、クラス定数などに非推奨の指定が可能に |
カッコなしのメソッドチェーン | インスタンス生成からメソッドをチェーンする際にカッコを省略可能に | |
暗黙のnullable型の非推奨化 | nullable型の明示的な指定が必要に | |
0のマイナス乗の動作変更 | 0をマイナス乗したときの挙動をエラーに | |
関数 | round関数の丸めモード | 丸めモードの指定を定数からEnumに(とその追加) |
型付き引数のデフォルトnullの禁止 | 型のある引数のデフォルト値にnullを指定できないように | |
BCMathの丸め関数 | 任意精度演算ライブラリBCMathで3種類の丸め関数を利用可能に | |
GMPクラスのfinal化 | GMPクラスをfinal化して継承できないように | |
絵文字分割関数 | 絵文字を正しく分割できるgrapheme_str_split関数を利用可能に | |
マルチバイト版関数 | マルチバイト対応のtrim関数、ltrim関数、rtrim関数、ucfirst関数、lcfirst関数を使えるように | |
レスポンスヘッダ取得関数 | HTTPレスポンスヘッダを取得するhttp_get_last_response_header関数を使えるように | |
リクエストボディ取得関数 | リクエストボディを取得するrequest_parse_body関数を使えるように | |
BCryptのコストの既定値変更 | BCryptの計算コストの既定値を12に変更しより安全に | |
fpow関数 | fmodに対応する算術演算関数fpowを利用可能に | |
配列検索関数 | array_find関数などにより配列の検索がより便利に | |
データベース | PDOドライバのサブクラス化 | PDOドライバにサブクラスが追加されることでDB固有の機能を呼び出し可能に |
SQLドライバごとのパーサ | データベースドライバごとにSQLパーサを実装 | |
HTML/DOM | HTML5対応のパーサ | Lexborを使用したクラス\DOM\HTMLDocumentでHTML5のパースが可能に |
DOM対応の修正 | Living Specification準拠のDOM対応の修正 | |
DOMのための関数 | 新しい関数querySelector、closest、matchesが利用可能に | |
巨大ファイルの拒絶 | xml_parse関数にXML_OPTION_PARSE_HUGEを指定して巨大なファイルの入力を拒絶可能に | |
DOMXPathの改善 | XPath式内でのコールバックサポートを改善して任意のCallableを利用可能に | |
ストリーム読み書きメソッド | XMLReaderおよびXMLWriterにストリーム読み書きのためのメソッドfromStream、toStreamが追加 | |
StreamBucketクラス | ストリームフィルタのためのクラスStreamBucketを利用可能に | |
処理系 | 新しいJITコンパイラ | 中間表現を用いた新たなJITコンパイラの実装でコンパイルと実行がより高速に |
JIT無効化の簡便化 | JITを無効化する際の設定がより簡便に | |
問題のある機能のアンバンドル化 | imap、pspell、oci8などの拡張機能をバンドルから除外 |
対象読者
- PHPの最新バージョンの機能を把握したい方
- PHPの経験者で、PHPに改めて入門したい方
- プログラミング言語の最新パラダイムに関心のある方
必要な環境
本記事のサンプルコードは、以下の環境で動作を確認しています。
-
macOS Sonoma / Windows 11 Pro 23H2
-
PHP(8.4.1)
-
Visual Studio Code 1.95.3(PHP Extension Pack 1.0.3)
-
[NOTE]サンプルの実行
掲載サンプルは、それぞれの.phpファイルに記述されています。動作確認は、PHP 8.4.1をHomebrewでインストールしたmacOS上で、拡張機能「PHP Extension Pack」をインストールしたVSCode(Visual Studio Code)のデバッグコンソールに出力させることで行っています。