OOP beni çıldırtıyor. Ben çalışmak için PDO hareket edemez. İşte benim DB sınıf bulunuyor:
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;
}
}
Ben böyle bir şey yapmak zaman tamam:
try
{
$db = new DB(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
Ama bu:
try
{
$db = DB::instance(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
Hiçbir şey yapmaz. Yani, yanlış parola / kullanıcı adını kullansanız bile, ben herhangi bir istisna alamadım.
İkinci şey - Siteme "kalbidir" sınıfı vardır:
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() { }
}
Ben sınıf içinde "yeni DB" kullanmaya çalıştı, ama bu var:
$r = $core->db->query("SELECT * FROM me_config");
print_r($r->fetch());
Hiçbir şey geri döner.
$sql = "SELECT * FROM me_config";
print_r($core->db->query($sql));
Alıyorum:
PDOStatement Object ( [queryString] => SELECT * FROM me_config )
Gerçekten ben yanlış yapıyorum, kafam karıştı?
Edit:
Tamam, şimdi ben ancak ben hala sorgu / exec kullanamazsınız, properity gibi nesne var.
Edit2:
Öyle tablo (sadece varsayılan değerler) herhangi bir kayıt yoktur ... aptal değilim