Advertisement
xnate

myPDO

Mar 31st, 2015
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.45 KB | None | 0 0
  1. <?php
  2.  
  3. final class myPDO {
  4.     /**
  5.      * @var Instance unique.
  6.      */
  7.     private static $_PDOInstance   = null ;
  8.  
  9.     /**
  10.      * @var DSN pour la connexion BD.
  11.      */
  12.     private static $_DSN           = null ;
  13.     /**
  14.      * @var Nom d'utilisateur pour la connexion BD.
  15.      */
  16.     private static $_username      = null ;
  17.     /**
  18.      * @var Mot de passe pour la connexion BD.
  19.      */
  20.     private static $_password      = null ;
  21.     /**
  22.      * @var Options du pilote BD.
  23.      */
  24.     private static $_driverOptions = array(
  25.         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  26.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  27.     ) ;
  28.  
  29.     /**
  30.      * Constructeur privé.
  31.      */
  32.     private function __construct() {
  33.     }
  34.  
  35.     /**
  36.      * Clonage interdit.
  37.      * @throws Exception de façon inconditionnelle
  38.      */
  39.     public function __clone() {
  40.         throw new Exception("Clonage interdit") ;
  41.     }
  42.  
  43.     /**
  44.      * Point d'accès à l'instance unique.
  45.      * L'instance est créée au premier appel et réutilisée aux appels suivants.
  46.      * @throws Exception si la configuration n'a pas été effectuée.
  47.      */
  48.     public static function getInstance() {
  49.         if (is_null(self::$_PDOInstance)) {
  50.             if (self::hasConfiguration()) {
  51.                 self::$_PDOInstance = new PDO(self::$_DSN, self::$_username, self::$_password, self::$_driverOptions) ;
  52.             }
  53.             else {
  54.                 throw new Exception(__CLASS__ . ": Configuration not set") ;
  55.             }
  56.         }
  57.          return self::$_PDOInstance ;
  58.     }
  59.  
  60.     /**
  61.      * Fixer la configuration de la connexion à la BD.
  62.      * @param string $dsn DNS pour la connexion BD.
  63.      * @param string $username Utilisateur pour la connexion BD.
  64.      * @param string $password Mot de passe pour la connexion BD.
  65.      * @param array $driver_options Options du pilote BD.
  66.      * @return void
  67.      */
  68.     public static function setConfiguration($dsn, $username='', $password='', $driver_options=array()) {
  69.         self::$_DSN           = $dsn ;
  70.         self::$_username      = $username ;
  71.         self::$_password      = $password ;
  72.         self::$_driverOptions = $driver_options + self::$_driverOptions ;
  73.     }
  74.  
  75.     /**
  76.      * Vérifier si la configuration de la connexion à la BD a été effectuée.
  77.      * @return bool
  78.      */
  79.     private static function hasConfiguration() {
  80.         return self::$_DSN !== null ;
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement