2

PHPで作成しているファクトリクラスがあります。各インスタンスは、データベース テーブルの行を表します。

数十のデータベース行を扱うので、各インスタンスにインスタンス化の選択をさせるのはばかげています。そのため、多くの行を返すデータベース クエリと組み合わせて使用​​するために、オブジェクトに値をダンプする方法があります。

しかし、ときどき、クエリ内のすべての値をオブジェクトに検索させたいこともあります。そこで、主キーを引数として取り、データベース クエリから値を検索する別のメソッドを作成します。

したがって、これら 2 つの方法の間では、実際には方法は必要ないように思われ__constructます。

このタイプのパターンに「工場」よりも具体的な名前はありますか? オブジェクトを構築するためのこれら 2 つの異なるメソッドを何と呼べばよいですか? これらのメソッドに一般的に使用される名前はありますか?

4

2 に答える 2

2

あなたが持っているパターンは、テーブルデータゲートウェイに多少似ていると思います。

データベースにアクセスする必要があるため、コンストラクターを指定することをお勧めします。コンストラクターにデータベース オブジェクト (たとえば、使用する場合は 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 に答える