这个问题与这里已经提出的问题非常相似:PDO using PDO::FETCH_PROPS_LATE and __construct() call?
但是,该问题中接受的答案并没有真正回答如何将获取的值传递给类的构造函数,如果这可能的话。这是一些简化的代码:
<?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()吗?