ООП сводит меня с ума. Я не могу переместить PDO на работу. Вот мой класс БД:
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 )
Я действительно запутался, что я делаю не так?
Edit:
Хорошо, теперь у меня есть объект как правильность, однако я все еще не могу использовать query / exec.
Edit2:
Я такой тупой ... В таблице нет записей (только значения по умолчанию)