Habit
班级应该代表一种独特的、独特的习惯;它不应该知道如何生成其他Habit
对象的集合。PeteH 有一个很好的答案,除了PHP 不支持类似 Java 的泛型。
在这种情况下我会做的可能是提供一种通过标识符HabitModel
检索特定对象的方法和提供对象集合的方法。最常见的是在 PHP 中,您会看到这个集合以数组的形式返回。Habit
Habit
<?php
class HabitModel {
public function getHabitById($id) {
$data = $this->db->query($habitSql); // assuming this will be something that returns data associated to $habit_id
return new Habit($data);
}
public function getAllHabits() {
$allData = $this->db->query($allHabitSql);
$habits = array();
foreach ($allData as $data)
{
$habits[] = new Habit($data);
}
return $habits;
}
}
我建议考虑如何正确设计这个,你应该努力遵守单一责任原则。一个类应该负责做一件奇异的事情。在这种情况下,Habit
对象负责表示与 a 关联的数据Habit
;它不负责收集数据或处理多个Habit
对象的结构。将对象组织Habit
成适当的数据结构是系统另一部分的责任。