私の質問は、MySQL のデータに基づいて PHP でオブジェクトを作成すると、データが二重に保存され、リソースが浪費され、アプリケーションが遅くなるのではないでしょうか?
- ユーザーが新しい製品に切り替えるたびにデータベースにクエリを実行していないため、MySQL データをオブジェクトとしてキャッシュして高速アクセスを可能にするために、これを行うだけですか?
- それほど複雑でないコードに対してのみ行うのでしょうか?
- 小さな MVC でこれを処理する適切な方法は何ですか? つまり、セッションの開始時に、モデルはすべての製品の配列を作成する必要がありますか? すべての製品の配列が存在することはなく、毎回データベースに問い合わせて、このデータを毎回新しい Product オブジェクトに変換する必要がありますか?
よろしければ、私が質問している理由を読み進めてください...
これは私のアプリケーションのサイズにとって実際には問題ではないことがわかりましたが、正しく開始したいと思います。作成した基本的な小さな MVC と、製品と呼ぶ項目のデータベースがあります。便宜上、MySQL データから PHP オブジェクトに移動するかどうか、いつ、どこに移動するかを決定しようとしています。
これは私のファイルツリーがどのように見えるかです:
root
controller
Controller.php
model
Model.php
Product.php
view
Products.php
Product.php
index.php
関連するコードは次のとおりです。
// Controller.php
if (!isset($_GET['product'])) {
- getProducts() && include view/Products
} else {
- getProduct('product') && include view/Product
}
// Model.php
getProducts() {
while($row = $stmt->fetch_assoc()) {
$array[$i] = new Product($row["id"], $row["name"], $row["price"]);
$i++;
}
return $array;
}
getProduct($id) {
$allProducts = $this->getProducts();
return $allProducts[$id];
}
// Products view
<?php foreach ($products as $product): ?>
display $product->id and $product->name
<?php endforeach; ?>
// Product view
display $product->name and $product->description and $product->price ...