我正在学习 php 中的 pdo,以便使数据库访问更容易和更有效。我读过的 fetch _class 的一个解释是,对象的属性是在调用构造函数之前设置的。这是什么意思?非常感谢任何方向。
原文由 Aditya Shukla 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在学习 php 中的 pdo,以便使数据库访问更容易和更有效。我读过的 fetch _class 的一个解释是,对象的属性是在调用构造函数之前设置的。这是什么意思?非常感谢任何方向。
原文由 Aditya Shukla 发布,翻译遵循 CC BY-SA 4.0 许可协议
而不是使用: FetchAll(PDO::FETCH_CLASS, 'classname')
您可以使用: fetchObject('classname')
例子:
class Car extends DatabaseTable {
const TABLE_NAME = 'cars';
// Table Columns
private $color;
private $brand;
private $type;
public function __construct($pdo, $id = false)
{
parent::__construct($pdo, TABLE_NAME, $id);
}
public static function getAll($pdo, $order = 'id') {
$query = 'SELECT * FROM ' . self::TABLE_NAME . '
ORDER BY ' . $order;
$statement = $pdo->prepare($query);
$objects = [];
while ($obj = $statement->fetchObject(self::class, [$pdo])) {
$objects[$obj->getId()] = $obj;
}
return $objects;
}
父构造函数只设置它的 3 个属性,例如: $this->id = $id;
原文由 Halfacht 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答549 阅读✓ 已解决
779 阅读
这意味着当使用 PDO 将结果返回到自定义对象时,您需要设置与查询结果键对应的成员变量。
如:
这样,PDO 可以将变量设置为其内部范围之外的对象。
如果您的用户类是这样的:
那么 PDO 将无法从范围之外设置值,因为没有定义属性。