class DB extends PDO
{
public function &instance($dsn, $username = null, $password = null, $driver_options = array())
{
static $instance = null;
if($instance === null)
{
try
{
$instance = new self($dsn, $username, $password, $driver_options);
}
catch(PDOException $e)
{
throw new DBException($e->getMessage());
}
}
return $instance;
}
}
当我做这样的事情时,没关系:
try
{
$db = new DB(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
但是这个:
try
{
$db = DB::instance(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
什么都不做。我的意思是,即使我使用错误的密码/用户名,我也没有任何例外。
第二件事 - 我的课程是我网站的“心脏”:
class Core
{
static private $instance;
public $db;
public function __construct()
{
if(!self::$instance)
{
$this->db = DB::instance(DB_TYPE.':hpost='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
return self::$instance;
}
private function __clone() { }
}
我试过在课堂上使用“新数据库”,但是这个:
$r = $core->db->query("SELECT * FROM me_config");
print_r($r->fetch());
什么都不返回。
$sql = "SELECT * FROM me_config";
print_r($core->db->query($sql));
我明白了:
PDOStatement Object ( [queryString] => SELECT * FROM me_config )
我真的很困惑,我做错了什么?
编辑:
好的,现在我已经将对象视为正确,但我仍然无法使用query / exec。
EDIT2:
我太笨了......这张桌子没有任何记录(只有默认值)
答案 0 :(得分:1)
尝试public static function &instance
。