検索
ニュース

「PHP 8.5」リリース コードの可読性が向上する「パイプ演算子」など多数の機能追加・変更下位互換性のない変更、非推奨化も

「URI拡張モジュール」の追加、アトリビュートや警告・エラー処理の強化なども。

Share
Tweet
LINE
Hatena

 オープンソースソフトウェア団体のPHP Groupは2025年11月20日(米国時間)、PHP言語の最新版「PHP 8.5」を公開した。新構文や関数の追加や改善、下位互換性のない変更、非推奨化など、多数の変更が加わった。

URI拡張モジュール追加やパイプ演算子など新構文の追加

 PHP 8.5では、RFC 3986とWHATWG URL標準に基づきURIやURLを安全にパース、編集するAPIを提供する新しいURI拡張モジュールが追加された。「uriparser」「Lexbor」のライブラリを利用した常時有効の仕組みとなり、従来の「parse_url()」関数と比べて正確さが強化された(参考)。


URIのパースを例にした8.4以前と8.5のコード例(提供:PHP Group

 新たにパイプ演算子(|>)が導入され、中間変数を使用せずにcallable(呼び出し可能な関数やメソッド)を左から右へチェインできる。複雑な入れ子呼び出しを置き換え、コードの可読性向上が期待される。


パイプ演算子による8.4以前と8.5のコード比較例(提供:PHP Group

 「Clone With」構文によってclone()関数使用時に連想配列でプロパティ更新が可能となり、readonlyクラスにおけるwith-erパターンを簡潔に記述できるようになった。

 staticなクロージャと第一級callableが定数式で利用できるようになった。これには、アトリビュートの引数、プロパティやパラメーターのデフォルト値、定数が含まれる。

関数の追加、改善

 新たに「array_first()」「array_last()」関数が追加され、配列の最初と最後の値を簡潔に取得できるようになった。PHP 8.5では空配列の場合にnullを返す仕様で、「??」演算子と組み合わせやすくなったという。

 持続的なcURL共有ハンドルの導入や「get_error_handler()」「et_exception_handler()」関数の追加などもあった。

アトリビュートの強化

 PHP 8.0で加わったアトリビュートが強化された。

  • 定数を対象にできる
  • #[\Override] アトリビュートをプロパティに適用できる
  • #[\Deprecated] アトリビュートをトレイトと定数に使用できる
  • 戻り値未使用時に警告を出す「#[\NoDiscard]」アトリビュートの追加

警告・エラー処理の強化

  • 「NAN」を他の型にキャストした際の警告表示
  • floatをintにキャストする際、int表現不可能な値の場合に警告表示
  • 「Fatal」エラー(実行時間の最大値の超過など)にバックトレース(関数呼び出しの履歴情報)が含まれるようになった

下位互換性のない変更、非推奨化も

 下位互換性のない変更も複数含まれる。PHP Groupは既存コードに影響する主な変更点として以下を挙げている。

  • バッククォート演算子による「shell_exec()」のエイリアス利用が非推奨化
  • 正規化されていない型名(boolean、integer、double、binary)でのキャストの非推奨化
  • 「disable_classes」INIディレクティブの削除
  • switch文内のcase文末でのセミコロン利用の非推奨化
  • 配列オフセットや「array_key_exists()」の引数へのnull利用が非推奨に

 PHP Groupは、構文改善や型安全性の向上、処理系パフォーマンス向上を継続して進める方針で、変更点の詳細は「ChangeLog」および移行ガイドで確認するよう呼び掛けている。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る