【问题标题】:php use associative array in class to construct HTMLphp在类中使用关联数组构造HTML
【发布时间】:2015-06-30 19:29:39
【问题描述】:

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

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

【问题讨论】:

    标签: php oop


    【解决方案1】:

    如果您希望您的 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;
    }
    

    【讨论】:

      【解决方案2】:

      PDO::FETCH_CLASSPDO::FETCH_INTO 更多信息在这里http://php.net/manual/en/pdostatement.fetch.php 和这个 PHP PDO fetching into objects

      还有一些示例代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 2011-10-13
        • 2020-06-12
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        相关资源
        最近更新 更多