【发布时间】:2013-01-15 11:27:06
【问题描述】:
这个问题与这里已经提出的问题非常相似:PDO using PDO::FETCH_PROPS_LATE and __construct() call?
但是,该问题中接受的答案并没有真正回答如何将 fetched 值传递到类的构造函数中(如果可能的话)。这是一些简化的代码:
<?php
class Course {
private $name;
private $code;
private $prerequisites;
public function __construct($name, $code) {
if(!is_string($code) || mb_strlen($code) !== 7) {
throw new \InvalidArgumentException('Invalid code.');
}
$this->name = $name;
$this->code = $code;
$this->prerequisites = array();
}
public static function getAllCourses() {
$sql = 'SELECT `name`, `code` FROM `courses` ORDER BY `code`;';
$db = new \PDO(' ... ', DB_USER, DB_PASS);
$stmt = $db->query($sql);
$stmt->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, 'Course', array('name', 'code'));
return $stmt->fetchAll();
}
}
?>
这段代码的问题是文字字符串“name”和“code”被传递给构造函数。但是我想将名称和代码的实际值传递给构造函数(显然)。
这可以吗?如果是,如何?我用bindColumn()吗?
【问题讨论】:
标签: php mysql pdo prepared-statement