blob: e944f69c0da529839c6e2282eb7c0c3378770609 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<?php
// php/Connection.php
// cette classe suit le pattern "singleton"
// but: ne permettre qu'une seule instance de la classe (laquelle sera éventuellement globale)
// comment?
// - Un attribut privé et statique qui conservera l'instance unique de la classe
// ainsi si un enfant de la classe "connection" est instancié plusieurs fois, il n'y aura toujours qu'une seule instance de PDO
// - Un constructeur privé afin d'empêcher la création d'objet depuis l'extérieur de la classe
// - Une méthode statique qui permet soit d'instancier la classe soit de retourner l'unique instance créée.
// impossible de créer deux instances (ici de PDO)
class Connection extends PDO
{
// paramètres du constructeur de PDO, avec sqlite seul le premier est nécessaire
public static $dsn = ''; // Data Source Name = 1er paramètre
//~ public static $user = '';
//~ public static $password = '';
//~ public static $options = '';
private static $Instance;
private function __construct()
{
try
{
parent::__construct(self::$dsn); // renseigne la variable $dsn de la classe PDO
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $this pour la méthode du parent PDO
}
catch(PDOException $e)
{
die('Erreur : '.$e->getMessage());
}
}
// créer son objet avec: $bdd = Connection::getInstance();
public static function getInstance(): self
{
if(self::$Instance === null)
{
self::$Instance = new self();
}
return self::$Instance;
}
}
|