PHPカンファレンス福岡2023
レギュラートーク(45分)

PHP 8 時代の ValueObject 考

shin1x1 新原雅司 shin1x1
8

ValueObject という実装パターンをご存知でしょうか。特にドメイン駆動設計(DDD)の流行以降、基本的な実装パターンとして多くの場面で活用されています。PHP における ValueObject の実装方法は、ある程度は共有されているものではありますが、細部において意見の相違や迷うポイントが存在します。さらに、PHP 8 において Constructor property promotionやreadonlyなどの新しい言語機能が追加されたことで、実装方法が変化しました。

本発表では、ValueObjectを改めて考察し、PHP 8 での実装方法やトレードオフについて議論します。

  • ValueObject とは
  • PHP 8 における ValueObject 実装
  • 完全コンストラクタ(不変オブジェクト)の利用
  • 不変条件検証エラーの扱い(バリデーションとの違い)
  • 独自型を作る
  • ValueObject のトレードオフ