class DB
{
private static $_instance;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count = 0;
private function __construct()
{
try{
$this->_pdo = new PDO($dsn, $user, $password);
} catch(PDOException $e)
{
die($e->getMessage());
}
}
private static function getInstance()
{
if(!isset(self::$_instance))
{
self::$_instance = new DB();
}
return self::$_instance;
}
}
当我尝试使用$ db = DB :: getInstance()时获取实例时我得到:致命错误:从上下文调用私有方法DB :: getInstance()''
我做错了什么?
答案 0 :(得分:0)
您应该了解visibility和简单模式singleton。 替换
private static function getInstance()
使用
public static function getInstance()
另外。您认为在哪里为PDO采用参数?
答案 1 :(得分:0)
您使用DB类作为抽象类,您应该创建它的对象。你还应该传递$ dsn,$ user,$ password。
class DB
{
private static $_instance;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count = 0;
public function __construct($dsn, $user, $password)
{
try{
$this->_pdo = new PDO($dsn, $user, $password);
} catch(PDOException $e)
{
die($e->getMessage());
}
}
public static function getInstance()
{
if(!isset(self::$_instance))
{
self::$_instance = new DB();
}
return self::$_instance;
}
}
用法
$db = DB('dsn','user','password');
$db->getInstance()
如果我错了抱歉!
答案 2 :(得分:0)
除了@sectus指出的内容之外,构造函数永远不会返回任何内容
self::$_instance = new DB();
实际上没有意义,考虑将该逻辑移到函数本身:
if(!isset(self::$_instance))
{
try{
self::$_instance = new PDO($dsn, $user, $password);
} catch(PDOException $e){
die($e->getMessage());
}
}