gpt4 book ai didi

php - POD::FETCH_CLASS 导致无限循环,而 PDO::FETCH_BOTH 则不会

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:24 24 4
gpt4 key购买 nike

我遇到了一个难以跟踪的错误,但我不确定是什么导致了这个错误。我有一个 Property 类,我想使用名为 loadProperty() 的方法从表 property 中获取一个条目。此方法是单例类 (Registry) 的一部分。

public function loadProperty() {
$this->load('model', 'property');
$sth = $this->dbh->prepare("SELECT * FROM property WHERE subdomain = :subdomain LIMIT 1");
$sth->setFetchMode(PDO::FETCH_CLASS, 'property');
$data = array('subdomain' => $this->router->subdomain);

try {
$sth->execute($data);

if ($sth->rowCount() == 1) {
$this->property = $sth->fetch();
} else {
$this->property = null;
}

} catch (PDOException $exception) {
// HANDLING EXCEPTION
}
}

该方法的第一行加载模型。它只是查找类文件并使用 require_once 要求它。

当我使用 PDO::FETCH_BOTH 而不是 PDO::FETCH_CLASS 时,所有这些工作正常。我的猜测是 PDO 在幕后做了一些我不知道的事情,但这导致我的 loadProperty 方法被无限次调用。

我在这里忽略了什么?

最佳答案

无限循环原来是由我自己的错误引起的——谁能想到。通过将 PDO 的获取模式设置为 PDO::FETCH_CLASSPDO 会尝试实例化一个 Property 的实例,这是人们可能期望的。但是,该模型在其构造方法中创建了对 Registry 类的引用,导致调用 Registry 类的构造函数,其中包括 loadProperty 方法如上所示。结果是无限循环。

关于php - POD::FETCH_CLASS 导致无限循环,而 PDO::FETCH_BOTH 则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711304/

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