0

$ object = new myClass($ name);

「new」を使用してアプリケーションに新しいオブジェクトを作成し、データベースに保存する場合、データベースから既存のオブジェクトを取得するためにどのような方法を使用しますか?

真に新しいオブジェクトを処理するための標準的な手順と、データベースから既存のオブジェクトを取得するための標準的な手順はありますか?

編集:

パラメーターに基づいて変更されるコンストラクターを用意するのは悪い考えですか?

すなわち

__construct($param) {
  if(is_numeric($param)) {
    // get existing data from DB
  } else {
    // set name for new object
    $this->name = $param;
  }
}
4

1 に答える 1

1

通常、Collection クラスで新しいオブジェクトをインスタンス化する必要があります。

レコードごとに 1 つの db クエリは無駄だからです。

したがって、db レコードをエミュレートするクラスと、レコードのリストをエミュレートするクラスが作成されます。

 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)


     }
 }
于 2012-05-20T06:44:56.147 に答える