使用类和DAO显示数据库中的数据

时间:2017-09-21 18:45:00

标签: php mysql class dao

我实际上在PHP中编写了一个类和一个DAO类,如下所示: dbDAO内容只是我的数据库PDO连接。我希望在我的索引页面上显示我的数据库包含的所有产品。从我的数据库中显示我的所有产品的最佳方法是什么,是在我的DAO类中还是使用对象产品? 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="images/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!

1 个答案:

答案 0 :(得分:0)

永远不要将HTML(表示逻辑)与业务逻辑结合起来。

您可能想要做的是:

定义用于定义数据的实体(Plain PHP Object)。

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>';
}