42 'host' => $config[
'host'],
43 'dbname' => $config[
'dbname'],
44 'port' => (int) ($config[
'port'] ?? 3306),
54 if (self::$instance ===
null) {
55 self::$instance =
new bd();
66 'mysql:host=%s;port=%d;dbname=%s;charset=utf8mb4',
67 $this->dbConfig[
'host'],
68 $this->dbConfig[
'port'],
69 $this->dbConfig[
'dbname']
82 if (!isset($config[$role][
'username']) || !isset($config[$role][
'password'])) {
83 throw new PDOException(
"Configuration DB manquante pour le rôle : {$role}");
85 $username = $config[$role][
'username'];
86 $password = $config[$role][
'password'];
87 $pdo =
new PDO($this->
getDsn(), $username, $password, [
88 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
90 $this->connections[$role] =
$pdo;
103 if (!isset($this->connections[$role])) {
106 return $this->connections[$role];
120 throw new Exception(
"Un singleton ne doit pas être deserialisé.");
static getInstance()
Retourne l'instance unique de la classe Constantes (pattern Singleton).
getConnexion(string $role=self::ROLE_SITE_USER)
Retourne la connexion PDO pour le rôle demandé.
__construct()
Constructeur privé pour empêcher l'instanciation directe.
__clone()
Empêche le clonage du singleton.
const ROLE_DB_ADMINISTRATEUR
const ROLE_SITE_ADMINISTRATEUR
getDsn()
Construit le DSN MySQL à partir de la config partagée.
static getInstance()
Retourne l'instance unique de la classe bd (pattern Singleton).
__wakeup()
Empêche la désérialisation du singleton.
createConnection(string $role)
Crée et retourne une connexion PDO pour le rôle donné (lazy).
$pdo
Classe de gestion de la connexion MySQL.