OOP me rend fou. Je ne peux pas déplacer PDO au travail. Voici ma classe DB:PDO utilisant singleton stocké comme propriété de classe
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;
}
}
Il est bien quand je fais quelque chose comme ceci:
try
{
$db = new DB(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
Mais ceci:
try
{
$db = DB::instance(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
}
catch(DBException $e)
{
echo $e->getMessage();
}
ne fait rien. Je veux dire, même quand j'utilise un mauvais mot de passe/nom d'utilisateur, je ne reçois aucune exception.
Deuxième chose - je classe qui est "cœur" de mon site:
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() { }
}
J'ai essayé d'utiliser "nouveau DB" à l'intérieur de classe, mais ceci:
$r = $core->db->query("SELECT * FROM me_config");
print_r($r->fetch());
Retour rien.
$sql = "SELECT * FROM me_config";
print_r($core->db->query($sql));
je reçois:
PDOStatement Object ([queryString] => SELECT * FROM me_config)
Je suis vraiment confus, ce que je fais mal?
Edit:
Ok, maintenant j'ai objet comme properity, mais je ne peux toujours pas utiliser requête/exec.
Edit2:
Je suis si bête ... Le tableau n'a pas de dossiers (seules les valeurs par défaut)