Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- final class myPDO {
- /**
- * @var Instance unique.
- */
- private static $_PDOInstance = null ;
- /**
- * @var DSN pour la connexion BD.
- */
- private static $_DSN = null ;
- /**
- * @var Nom d'utilisateur pour la connexion BD.
- */
- private static $_username = null ;
- /**
- * @var Mot de passe pour la connexion BD.
- */
- private static $_password = null ;
- /**
- * @var Options du pilote BD.
- */
- private static $_driverOptions = array(
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
- ) ;
- /**
- * Constructeur privé.
- */
- private function __construct() {
- }
- /**
- * Clonage interdit.
- * @throws Exception de façon inconditionnelle
- */
- public function __clone() {
- throw new Exception("Clonage interdit") ;
- }
- /**
- * Point d'accès à l'instance unique.
- * L'instance est créée au premier appel et réutilisée aux appels suivants.
- * @throws Exception si la configuration n'a pas été effectuée.
- */
- public static function getInstance() {
- if (is_null(self::$_PDOInstance)) {
- if (self::hasConfiguration()) {
- self::$_PDOInstance = new PDO(self::$_DSN, self::$_username, self::$_password, self::$_driverOptions) ;
- }
- else {
- throw new Exception(__CLASS__ . ": Configuration not set") ;
- }
- }
- return self::$_PDOInstance ;
- }
- /**
- * Fixer la configuration de la connexion à la BD.
- * @param string $dsn DNS pour la connexion BD.
- * @param string $username Utilisateur pour la connexion BD.
- * @param string $password Mot de passe pour la connexion BD.
- * @param array $driver_options Options du pilote BD.
- * @return void
- */
- public static function setConfiguration($dsn, $username='', $password='', $driver_options=array()) {
- self::$_DSN = $dsn ;
- self::$_username = $username ;
- self::$_password = $password ;
- self::$_driverOptions = $driver_options + self::$_driverOptions ;
- }
- /**
- * Vérifier si la configuration de la connexion à la BD a été effectuée.
- * @return bool
- */
- private static function hasConfiguration() {
- return self::$_DSN !== null ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement