PHP对象创建循环

PHP对象创建循环,php,oop,infinite-loop,Php,Oop,Infinite Loop,在这里我有足够的知识去做危险的事 我正在开发一个web应用程序,它有不同类型的相关类。例如,有一个“Item”类和一个“User”类。“Item”类有一个名为“Owner”的属性,该属性引用“User”对象。类似地,“User”类有一个名为“Items\u array”的属性,它是一个包含(您猜到了)“Item”对象的数组 我的理解是,对象是作为引用自动返回的,因此我有一些函数用于fetch_item、fetch_user等。这些函数跟踪对象的主数组,如果已经存在,则返回正确的对象,如果不存在,

在这里我有足够的知识去做危险的事

我正在开发一个web应用程序,它有不同类型的相关类。例如,有一个“Item”类和一个“User”类。“Item”类有一个名为“Owner”的属性,该属性引用“User”对象。类似地,“User”类有一个名为“Items\u 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类中的属性存储用户对象没有问题。今天早上,我在我的用户类中添加了一些存储项对象的属性,现在我不断遇到“无法打开数据库连接”错误。我已经将其与Item对象的创建隔离开来——当我评论说一切正常时。我相当肯定我已经创建了某种无限循环,在这种循环中,项不是使用引用,而是创建用户,而用户又试图重新创建项


这有意义吗?以前有没有人遇到过类似的情况,或者有没有想过如何解决这个问题?

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

请发布更多代码,例如调用
get\u user()
的部分。是否使用
\u construct()
方法?否则,创建新对象本身永远不会在循环中结束,因为属性只能由定义中的标量设置。您所描述的可能会导致某种“内存不足”错误,而不是数据库连接错误。您确定数据库服务器正在运行吗?请向我们展示您添加到用户对象属性的内容。获取远程调试器并逐步执行。我的db连接工厂使用了与上面相同的逻辑,但结果是一个类型阻止它返回现有连接!这与“无止境循环”问题(也已解决)一起导致db连接错误。在引入循环问题之前,我从未将连接数设为最大值。