PHP对象创建无限循环

时间:2012-02-26 18:22:01

标签: php oop infinite-loop

在这里,我有足够的知识是危险的。

我正在使用具有不同类型的相关类的网络应用。例如,有一个" Item"上课和"用户"类。 "项目" class有一个名为" Owner"指的是"用户"宾语。同样,"用户" class有一个名为" Items_array"的属性。这是一个拥有(你猜对了)的数组" Item"对象。

我的理解是对象被自动返回作为引用,所以我有fetch_item,fetch_user等函数。这些函数跟踪一个主对象数组,如果它已经存在则返回正确的对象,如果已存在则返回一个新对象。它不存在。例如,下面是获取用户的代码。

public function get_user ($userID) {
    if (!isset ($this->users_arr[$userID]))
        $this->users_arr[$userID] = new User($userID);
    return $this->users_arr[$userID];
}

我的Items类中的属性存储用户对象没有问题。今天早上我在我的User类中添加了一些属性,用于存储Item对象,现在我一直在“无法打开数据库连接”#39;错误。我已将此对象与Item对象的创建隔离开来 - 当我发表评论时,一切正常。我非常确定我创建了某种无限循环,而不是使用引用,项目正在创建用户,而用户又在尝试重新创建项目。

这有意义吗?任何人之前遇到类似的事情,或者对如何解决问题有任何想法?

1 个答案:

答案 0 :(得分:0)

由于添加了一些代码,我能想到得到“无法打开数据库连接”错误的唯一原因是你打开了太多代码。例如,MySQL每个用户有30个连接限制(那就是你)。通常,每个脚本不应该有多个连接,如果没有全局存储连接句柄,那么就可以在那里发生错误。