getterは必須ではありません。 ちょっと手間ですが、私は「リポジトリでカプセル化を破るためのインタフェース」を使うことがよくあります。 ※多分何かのデザインパターンとして名前があったと思いますが、分からないです PHPが分からないのでJavaで書きます。 // Hogeエンティティ // ドメインモデルなので当然ドメインレイヤーに配置 public class Hoge { // IDはずっと変化しない // ドメイン上ではgetterが不要だが、永続化の際に取り出せる必要がある private final int id; // 名前は変更することがある private String name; public Hoge(int id, String name) { this.id = id; this.name = name; } public String name() { retu