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