PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則 by 武田 憲太郎

PHP Conference Japan 2025
レギュラートーク(25分)

PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則

KentarouTakeda 武田 憲太郎 KentarouTakeda
4

PHP 8.4「プロパティフック」からオブジェクト指向設計を紐解きます。

プロパティフックとは、プロパティの読み書きに任意の処理を挟み込む機能です。従来の退屈なgetter/setterメソッドを使うことなく、より自然かつ柔軟な記述でプロパティの読み書きを実装できます。初めて使う際の学習コストも低く、手軽に導入できる点も魅力です。

一方、少し複雑な使い方や他の機能と組み合わせた使い方をしようとすると、型に関する制限や思わぬ仕様の違いに戸惑うことがあります。コンストラクタプロモーションとsetフックでの型の違い、readonlyとの併用不可、継承時の制限、これらは経験者でも混乱を招きがちです。

こうした仕様の背後には、オブジェクト指向設計の基本原則のひとつである「リスコフの置換原則(LSP)」が存在します。LSPは一見すると開発を窮屈にする制約のように感じるかもしれません。しかし、実はその制約が、アプリケーションの一貫性や信頼性を守るための重要な役割を果たしています。

本トークでは、プロパティフックの構文と振る舞いを整理しながら、なぜそのような制約が必要なのかを丁寧に紐解いていきます。また、LSPの考え方はオブジェクト指向の設計にとどまらず、より広い領域でも応用可能な「設計上のものの見方」であることにも触れていきます。

PHPの最新機能をきっかけに、日々の開発でも見落とされがちな設計原則の価値を改めて見直しましょう。