- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么方法可以将 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/
有什么方法可以将 PDO 的结果作为构造函数的参数传递吗?比方说,我有以下类(class): class Test { private $value1; private $value2
是否可以创建另一个实例作为 PDO::fetchAll() 中当前实例的参数发送? 如果设置了\PDO::FETCH_PROPS_LATE,它将首先调用__construct,然后设置属性。因此通过数
我喜欢使用 PDO::FETCH_CLASS 来获取对象数组,应该调用构造函数,因为我需要此类中的构造函数。作为第三个参数,我使用数据库表中的列名。结果我得到了列的名称,但不是数据库中的预期值。我正在
我正在尝试将查询结果转换为类。 $result->setFetchMode(PDO::FETCH_CLASS, 'myclass', array()); 这工作得很好,但是类名 myclass 取决于
我有以下映射到 MySql 表的示例类(如下所示)。当我使用 PDO::FETCH_CLASS 并执行 *var_dump* 时,我看到映射将转到所有小写属性。即“shortName”映射到“shor
有什么方法可以将 PDO 的结果作为构造函数的参数传递吗?比方说,我有以下类(class): class Test { private $value1; private $value2
我正在尝试在一个对象上使用 PDO::FETCH_CLASS。我正在使用命名空间并输入: $result = $query->fetchAll(\PDO::FETCH_CLASS, 'Product'
我遇到了一段代码,其中 PDO::FETCH_CLASS 被调用时没有将类的名称作为参数传递,如下所示: function getUsers() { $DBH = $this->getDb
PDO::FETCH_CLASS 允许使用预填充数据初始化类实例。它看起来像这样: data === ['foo' => 1, 'bar' => 1] } public functio
假设我有 2 个 php 对象: 和 每个帖子都有一个唯一的约束,数据库中有 1 个用户。 我想使用 PDO 的“FETCH_CLASS”方法将数据填充到“Post”对象中,该方法适用于所有“Po
假设我有 2 个 php 对象: 和 每个帖子都有一个唯一的约束,数据库中有 1 个用户。 我想使用 PDO 的“FETCH_CLASS”方法将数据填充到“Post”对象中,该方法适用于所有“Po
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。
在使用 PDO::FETCH_CLASS 时,似乎没有办法让 PDO 使用构造函数/setter 创建新对象。 我猜,目前使用 FETCH_CLASS 时,成员变量会使用反射来填充。它们当然不会通过构
借助 PDO,我们现在可以轻松地将字段映射到对象的属性,速度极快。这个: class myClass {} $stmt = $db->prepare('SELECT foo,bar FROM tab
因此,我使用 PDO::FETCH_CLASS 来创建一个新对象,并使用数据库中同名列中的值填充属性,如下所示: $db = Connection::get(); $sql = $db->prepar
我有一个像这样的 php 类: class bar{ public $value; } class foo extends bar{ public $value; public
我有一个类使用魔术方法来存储属性。这是一个简化的示例: class Foo { protected $props; public function __construct(array
我在下面的代码中遇到问题: $query = 'SELECT user.id as id, pet.name as name FROM user LEFT JOIN pet on
我想使用 PDO 创建对象实例。我知道有很多 questions已经,但我只发现可以将参数数组发送给构造函数。在我看来,构造函数似乎只能接受一个数组作为参数。然而,这会降低构造函数的意义。 我想用我自
我觉得在这里问这个问题有点脏,因为我觉得我应该可以用谷歌搜索它,但是好吧......我没有找到任何东西。 有没有办法在正常的 fetch 函数中使用 fetchmode PDO::FETCH_CLAS
我是一名优秀的程序员,十分优秀!