我有几个不同对象的类都共享相同的数据库。我希望这些对象共享相同的MySQLi连接,因此我不必为每个对象都建立连接,但并非所有命令都需要活动的MySQLi连接,所以我想在需要时设置它。每次调用API时连接到MySQL服务器对我而言都是巨大的资源浪费。如何在没有实际连接的情况下建立一个mysqli对象?
所以我的主要API将有这样的事情(idealy):
$db = new mysqli();
$a = new objA($db);
class objA{
private $db;
function __construct($db){
$this->db = $db;
}
function doSomething(){
if(!$this->db->isConnected())
$this->db->connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
return $this->db->query(MY_QUERY);
}
}
因此,数据库连接只会是建立,如果我会打电话$a->doSomething()
从API。这个设置也使我能够在完全不同的对象中使用相同的MySQL连接。
如何获取像$mysql->isConnected()
这样的函数来检查与MySQL数据库的实际连接是否已构建,如果尚未建立,建立它?
您是否尝试过使用辛格尔顿为你的数据库连接? –
这不是问题......我不想强制只有一个连接,我试图阻止与MySQL服务器通信,直到我真的需要。 – patrick
您是否必须定义'$ db = new mysqli();'?是否有可能为你分配'null'并验证if($ this-> db === null)'那么就没有连接,并且你的'$ this-> db = new mysqli(); '在if语句中连接之前。 –