所以我正在使用很多类......一切正常,直到我将会话类(验证和创建/销毁会话)包含到我的用户类中(用户操作,登录,注册等)。 / p>
基本上,我得到了一个“mysqli太多连接!”错误...我认为这是因为我的会话类包含在用户类中,反之亦然:
__类用户构造:
$this->db = new DB($db);
$this->password = new Password();
$this->session = new Session($db);
$ db只是一个数据库信息数组...
__类Session的构造:
$this->error = new Error();
$this->users = new User($db);
$this->db = new DB($db);
所以你看他们两人是如何相互包容的,我认为这是导致我的连接错误的原因。
答案 0 :(得分:1)
您必须先创建一个,然后将其传递给另一个的构造函数。
像:
会话:
__construct($db){
$this->db = $db; //Don't reconstruct
$this->users = new User($db,$this);
...
}
用户:
__construct($db,$session){
...
$this->db = $db; //Don't re-construct
$this->session = $session;
...
}
答案 1 :(得分:1)
创建数据库连接不是用户的工作。 (当你想到它时,它没有多大意义,是吗?)
而是询问以获取构造函数中的数据库连接。
class User {
public function __construct(DB $db) {
这样,您可以在整个应用程序中重用连接对象。
答案 2 :(得分:0)
在会话类
中做
$this->db = $db;
并在您的用户类
中$this->session = new Session($this->db);
答案 3 :(得分:0)
如果你创建了一个用这两个类构造并在第3类上运行循环的第三个类?然后在UserSession上运行所有数据库实例?我不知道?
__类用户构造:
$this->password = new Password();
__类Session的构造:
$this->error = new Error();
__ UserSession类的构造:
$this->db = new DB($db);
$this->users = new User($db);
$this->users = new Session($db);