gpt4 book ai didi

php - PDO - FETCH_CLASS - 将结果作为参数传递给构造函数

转载 作者:行者123 更新时间:2023-11-30 21:27:42 25 4
gpt4 key购买 nike

有什么方法可以将 PDO 的结果作为构造函数的参数传递吗?比方说,我有以下类(class):

class Test
{
private $value1;
private $value2;
function __construct($val1, $val2)
{
$this->value1 = $val1; $this->value2 = $val2;
}
}

然后,通过 PDO 驱动程序,我从数据库中选择一些数据,比方说:

SELECT price, quantity FROM stock

$results = $query->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "Test");

现在,PDO 将这些值直接传递给类字段,并绕过构造函数。

也许我遗漏了什么,但我想将查询结果传递给构造函数。构造函数不能依赖于查询,我希望即使不使用 PDO 也能够实例化此类。

最佳答案

我想到的唯一方法是使用 FETCH_FUNC 常量并提供一个函数来通过构造函数创建对象。

function rowMapper( $price, $quantity)
{
return new Test( $price, $quantity);
}
$results = $query->fetchAll( PDO::FETCH_FUNC, "rowMapper");

现在您的对象将仅使用您的构造函数创建,而不是让 PDO 在私有(private)数据中注入(inject)值并破坏封装。

关于php - PDO - FETCH_CLASS - 将结果作为参数传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58106411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com