67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
/**
|
|
* @brief Classe gérant le comportement à la base de données
|
|
* @brief Sert d'intermédiaire entre la BDD et le PDO
|
|
*/
|
|
class bdd {
|
|
|
|
///Instance de la connexion à la base de données
|
|
private $instancePDO;
|
|
|
|
///Instance statique de la base de données
|
|
private static $bdd;
|
|
|
|
/**
|
|
* @brief Construit une nouvelle connexion à la base de données
|
|
*/
|
|
private function __construct() {
|
|
|
|
try {
|
|
//Mise en place des options
|
|
$options = array(
|
|
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
|
|
);
|
|
|
|
//Création du PDO
|
|
$this->instancePDO = new PDO(config::$bdd_address, config::$bdd_user, config::$bdd_password, $options);
|
|
|
|
//On précise les options du PDO
|
|
$this->instancePDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
} catch (PDOException $e) {
|
|
if (config::$debug) {
|
|
//En cas de bug et si le mode DEBUG est activé
|
|
//On affiche un message
|
|
echo 'Connexion échouée : ' . $e->getMessage();
|
|
header("Refresh: 0;URL=index.php?page=500");
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Accesseur de l'instance bdd
|
|
* @return instance BDD
|
|
* @note Création automatique d'une nouvelle instance si besoin
|
|
*/
|
|
public static function getInstance() {
|
|
if (!isset(self::$bdd)) {
|
|
//Si l'instance n'a pas encore été crée
|
|
//On en créer une nouvelle et on la stocke
|
|
self::$bdd = new bdd();
|
|
}
|
|
|
|
//On renvoie l'instance sauvegardée
|
|
return self::$bdd;
|
|
}
|
|
|
|
/**
|
|
* @brief Accesseur pour l'objet PDO de la classe
|
|
* @return PDO
|
|
*/
|
|
public function getPDO() {
|
|
return $this->instancePDO;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|