2

我有一个我正在用 PHP 制作的工厂类。每个实例代表数据库表中的一行。

由于我将处理数十个数据库行,因此让每个实例在实例化时进行选择是很愚蠢的。所以我有一种方法可以将值转储到对象中,以便与返回大量行的数据库查询结合使用。

但有时,我还想让对象在查询中查找所有值。所以,我将有另一种方法,它将主键作为参数,并从数据库查询中查找值。

所以看起来在这两种方法之间,我真的不需要一个__construct方法。

这种模式有没有比“工厂”更具体的名称?我应该怎样称呼这两种构造对象的不同方法——这些方法有常用的名称吗?

4

2 回答 2

2

我认为您拥有的模式有点类似于table data gateway

由于它需要访问数据库,我建议给它一个构造函数。您可以向构造函数传递数据库对象(例如,如果您使用它,则为 PDO 或其他),因此该类不需要知道如何连接到数据库。

否则你的想法似乎不错。

于 2010-07-11T20:03:09.247 回答
0

除了数据类之外,您可能还需要一个 DAO 存储类?

<?php
class Row {
  private $fields1;
  private $fields2;
  __construct($field1, $field2) {
    $this->fields1 = $fields1;
    $this->fields2 = $fields2;
  }
}

class Storage {
  public load($id) {
    $rawRow; // loaded from db
    return $this->createRow($rawRow);
  }
  protected createRow(array $rawRow) {
    return new Row($rawRow['fields1'], $rawRow['fields2']);
  }
}
?>
于 2010-07-12T02:11:29.597 回答