SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ますます便利になるPHPの新機能を探ろう!

より使いやすくなったPHP 8.4の新機能──クラス定義や言語仕様とデータベース関連の強化ポイント

ますます便利になるPHPの新機能を探ろう! 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 第5回では、PHP 8.4におけるクラス定義や言語仕様、データベース関連の強化ポイントを主に紹介します。まずはプロパティフック、ゲッタ/セッタの非対称可視性といったクラス定義の大きな変更点に加えて、非推奨属性、インスタンス生成時のカッコの省略、暗黙のnullable型の非推奨化といった言語仕様の変更点を紹介します。そして、データベース関連の機能拡張についても紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 PHPは、2024年11月にバージョン8.4となりました。前バージョンである8.3からほぼ1年ぶりのリリースになります。PHPは、導入のしやすさと使い勝手の良さでリリース当時から人気があり、バージョンアップのたびに洗練され、使い勝手の向上を目指した機能が多数実装され、改良されています。本連載ではPHPの最新バージョンにフォーカスし、その強化・変更ポイントを紹介していきます。

表1 PHP 8.4の新機能
分類 機能 概要
クラス定義 プロパティフック プロパティに直接ゲッタ/セッタを記述できるように(とパフォーマンスの改善)
非対称可視性 ゲッタとセッタに異なる可視性を指定可能に
遅延初期化 必要時にインスタンス化を実行するように
言語仕様 非推奨属性 関数、メソッド、クラス定数などに非推奨の指定が可能に
カッコなしのメソッドチェーン インスタンス生成からメソッドをチェーンする際にカッコを省略可能に
暗黙の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)のデバッグコンソールに出力させることで行っています。

次のページ
クラス定義での機能強化

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ますます便利になるPHPの新機能を探ろう!連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20665 2024/12/25 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング