我刚刚升级了我的php表单mysql,以面向对象的方式使用mysqli。我有理由相信这段代码中有错误。我的目标是使用单一模式来保证每个脚本执行只有一个数据库连接。 $ db保存数据库链接。
有人可以验证该行
return $one->$db->query($query);
语法关闭。
class one
{
private static $single = NULL;
public $db = NULL;
public function __construct()
{
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
self::$single=1;
}
public static function make_one()
{
if(self::$single==NULL)
{
return new self();
}
}
}
/*database*/
class database
{
public function __construct()
{
one::make_one();
}
public static function arche_query($query)
{
return $one->$db->query($query);
}
}
答案 0 :(得分:1)
将其更改为
return one::make_one->db->query($query);
你的单身人士模式怎么不正确 单例模式应该只创建一个实例,在您的情况下不是那种情况
class one
{
private static $_selfInstace;
public $db;// default is null so no need to assign
public function __construct()
{
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
}
public static function getInstance()
{
if( !(self::$_selfInstace instanceof self) ) {
self::$_selfInstace= new self();
}
return self::$_selfInstace;
}
}
class database
{
public function __construct()
{
}
public static function arche_query($query)
{
return one::getInstance()->db->query($query);
}
}