基本的なレベルでOOPのパラダイムが得られると思いますが、データベースのレコードを検索する適切な方法を概念化するのは難しいです。私は本当に私は私が考えるようOOPが同じくらい得ることはありませんので、これはそれがオブジェクトのための良い候補をたくさん持っているので、私は書くしようとしているアプリケーションは、ショッピングカートです...オブジェクトのコレクションを操作するにはどうすればよいですか?あるいは、オブジェクトは類似のオブジェクトのコレクションを取得しますか?
である疑いがあります。私が扱うオブジェクトは製品です(はい、これは非常に原始的です)。
<?php
class Product
{
public $id = 0;
public $name = '';
public $price = 0;
function __construct($id)
{
// if $id exists try to retrieve
// a product with $id
// else create a new product
// and set $this->id
}
}
$product = new Product();
echo $product->name;
?>
十分に簡単です。しかし、今では(検索結果ページの)複数の商品を検索したいと思っています。
私の傾斜は、いくつかの入力を取り、単に製品IDのリストを返すSQLクエリを実行し、別のクラスを記述することです。私はそれらの結果をループし、それぞれの製品オブジェクトを作成します。その後、オブジェクトの配列をループして、検索結果ページを構築することができます。
私は理由は分かりませんが、これはちょうど正しい方法のように感じられません。あまりにも多くの仕事のように思えるのは、まず製品IDの一覧を取得するためのクエリを実行してから、各製品のデータを取得するためにさらにクエリを実行するからです。私が必要とするすべてのデータを返すクエリを1回だけ実行すると、処理時間が大幅に短縮されます。
どうすればいいですか?おそらく他の何か?
「データベースを認識していません」というのは、オブジェクトにデータを設定しないでください。 – barophobia
少なくとも、コンストラクタ内のデータベース自体を照会するのではありません。おそらく、「レコード」のデータソースからオブジェクトの配列(または別のコレクション)を作成する静的メソッドがあります。イテレータ。 pdoの結果はイテレータとして使用できます。このメソッドは、それがデータベースクエリの結果であることを知る必要はありません。 – VolkerK