カプセル化を壊さずにこれを実装する適切な方法は何ですか? 例は単純にしましたが、さらにエンティティを追加する必要がある場合、ソリューションは適切に拡張されるはずです。私は学生と次のようなコースを持っています:
class Student {
private $id;
private $name;
/**
* Courses student is attending
* @var Course[]
*/
private $courses = array();
private $numberOfAttendingCourses;
}
class Course {
private $code;
}
これをレンダリングしたいとしましょう:
<ul>
<li>[studentName] ([numberOfAttendingCourses])</li>
</ul>
また、これは別のユースケースのビューです
<ul>
<li>[studentName] (ID: [studentId])
<ul>
<li>[course1Name] ([course1Code])</li>
<li>[course2Name] ([course2Code])</li>
</ul>
</li>
</ul>
これをゲッターとセッターで実装する方法を知っています。両方のオブジェクトを可能な限りカプセル化する方法に興味があります。