2010-05-23 3 views
2

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)

Répondre

1

Essayez public static function &instance.