php在类中使用关联数组来构造HTML


php use associative array in class to construct HTML

我想在类中使用一个关联数组(PDO查询的结果),这样我就可以用一些数据库内容构建一个div
如何在类中获取数组?在while循环中,我想创建一个对象,在该对象的Class中,我要构造HTML。

while($data = $stmt->fetch( PDO::FETCH_ASSOC )){ 
    $html = new class;
    echo $html;
}

如果希望while循环能够像编写它一样工作,可以编写类的构造函数,使其接受数据作为参数,然后在__toString方法中实现div输出。

class HtmlDivFormatter {
    private $data;
    public function __construct($data) {
        $this->data = $data;
    }
    public function __toString() {
        return '<div>' . $this->data['column_name'] . '</div>';
        // whatever HTML you have in mind
    }
}
while ($data = $stmt->fetch( PDO::FETCH_ASSOC )) { 
    $html = new HtmlDivFormatter($data);
    echo $html;
}

参见PDO::FETCH_CLASSPDO::FETCH_INTO此处提供更多信息http://php.net/manual/en/pdostatement.fetch.php这个PHP PDO获取对象

以及一些示例代码:

<?php
$sql = 'SELECT firstName, lastName FROM users';
$stmtA = $pdo->query($sql);
$stmtA->setFetchMode(PDO::FETCH_CLASS, 'Person');
$objA = $stmtA->fetch();
var_dump($objA);
//first create the object we will fetch into
$objC = new Person;
$objC->firstName = "firstName";
$objC->lastName = "lastName";
$stmtC = $pdo->query($sql);
$stmtC->setFetchMode(PDO::FETCH_INTO, $objC);
$objC = $stmtC->fetch(); // here objC will be updated
var_dump($objC);

class Person{
    public $firstName;
    public $lastName;
}