Показать данные из базы данных с классом и DAO

Я на самом деле код в PHP класс и класс DAO, как это:
Содержимое dbDAO только для моего соединения с базой данных PDO. Я хочу, чтобы на моей странице указателя отображался весь мой продукт, содержащийся в моей базе данных. Каков наилучший метод для отображения всех моих продуктов из моей базы данных, в моем классе DAO или с использованием объекта Product? Класс DAO предназначен только для изменения содержимого моей базы данных?

Вот мой код:

Класс DAO:

class ProduitDao extends dbDAO
{
public function displayProduits()
{
$product = $this->bdd->prepare("SELECT * FROM products");
$product->execute();

while ($displayProduct = $product->fetch() )
{
?>
<div class="prodname">
<?php
echo '<a href="./product.php?id='.$displayProduct['no'].'"</a>';
echo '<img src="http://web-answers.org/wp-content/uploads/2019/02/produits/'.$displayProduct['image'].'" alt=" '.$affichageProduit['nom'].' "</img>';
?>
</div>
<?php
}
}

Класс продукта:

    public function __construct($no, $img)
{
$this->no = $numero;
$this->img = $img;
}

// GET and SET goes here

Tancks!

0

Решение

Никогда не комбинируйте HTML (логику представления) с вашей бизнес-логикой.

Что вы можете сделать, это:

Определите ваши сущности (обычный объект PHP), которые определяют данные.

class ProductEntity {
protected id;
protected name;
//then define your setters and getters
}

Тогда у вас будет DAO для возврата сущности, которую вы только что определили.

class ProductDao {
public function getProducts() {
$products = [];
$product = $this->bdd->prepare("SELECT * FROM products");
$product->execute();

while ($displayProduct = $product->fetch()) {
$p = new Product();
$p->setId($displayProduct['id']);
$p->setName($displayProduct['name']);
$products[] = $p;
}
return products;
}
}

Теперь вы можете позвонить своему DAO, чтобы вернуть коллекцию продуктов.

А затем вы передадите эту коллекцию на слой VIEW, и именно здесь вы сможете добавить HTML (презентационная логика)

foreach ($products as $product) {
echo '<div>' . $product->getId() . '</div>';
}
0

Другие решения

Других решений пока нет …