通常你会想要一个 Collection 类来实例化你的新对象。
因为每条记录一个数据库查询是浪费的。
因此,您将拥有一个模拟数据库记录的类和一个模拟记录列表的类。
class collection {
protected $filters = array('ids' => array(), 'published' => true, 'name' => '');
protected $records = array();
public function __construct($filters) {
// validate $filters content here
$this->filters = array_merge($this->filters, $filters);
$query = $this->generateQueryUsing($this->filters);
$pdos = $pdo->query($query);
foreach($pdos->fetch(PDO::FETCH_CLASS, 'Record', array(NULL, FALSE)) AS $item)
$this->records[] = $item;
foreach($pdos->fetch() AS $item)
$this->records[] = new Record($item, FALSE); // Record::__construct($data, $is_new = TRUE)
}
}