Bonsoir,
1ers pas en Orienté Objet... J'avoue c'est encore vague pour moi.
Je tente une 1ère classe. Ce sera une classe Singleton pour la connexion (en PDO).
J'aimerais avoir les avis et critiques, voir si je continue sur cette base quelque chose de plus complet, voir si je m'y prend pas trop mal...
Ce n'est pas évident et les notions sont encore bien floues, aussi, je vous demanderais d'être compréhensifs (et simples)...

Merci de votre aide

index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<?php
//CONFIG includes
	define('INCLUDES','includes/');
	set_include_path(get_include_path().PATH_SEPARATOR.INCLUDES);
 
//CONFIG bdd + classes
	require_once('config.inc');
 
//CONSTANTES bdd
	$config['driver'] = DRIVER;
	$config['dbname'] = DBNAME;
	$config['host'] = HOST;
	$config['user'] = USER;
	$config['password'] = PASSWORD;
	$config['dsn'] = $config['driver'] 
					. ':dbname=' . $config['dbname'] 
					. ';host=' . $config['host'];
 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
		//$connexion =
		$connexion = Connexion::getInstanceConnexion($config);
		var_dump($connexion);
		$host = Connexion::getHost();
		var_dump($host);
		echo 'Hote : '.$host;
		?>
    </body>
</html>
config.inc
//constantes de ma connexion
//spl autoload pour mes classes

Connexion.class.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
<?php
// Connexion = classe Singleton
class Connexion
{
	//durée d'execution du script
	private $_startTime;
	private $_endTime;
	private $_time;
 
	//valeurs de la connexion à la BDD à null
	public static $_connexionBdd = null;
	private static $_instanceConnexion = null;
 
	private static $_host = null;
	private static $_bdd = null;
	private static $_login = null;
	private static $_pswd = null;
 
	private function __construct($config=false)
	{
		//si fction construct déclenchée, tps départ en microsecondes
		$this->_startTime = round(microtime(), "6");
 
		self::$_host = $config['host'];
		self::$_bdd = $config['dbname'];
		self::$_login = $config['user'];
		self::$_pswd = $config['password'];
 
		//connexion
		try
		{
			self::$_connexionBdd=new PDO($config['dsn'],$config['user'],$config['password']);  
		}
		//gestion des erreurs
		catch(PDOException $e)
		{
			echo 'Erreur de connexion au serveur MySQL ! <br /> Erreur détectée : '.$e->getMessage();
			exit(); 
		}
	}
 
	//"anti-cloning"
	private function __clone()
	{
	}
		/*  2nd type d'"anti-cloning" :
			
				public function __clone()
				{
				  throw new Exception('ERREUR DE MANIPULATION : Tentative de clônage de la classe Singleton Connexion !');
				}
		*/
 
	//lancement de la connexion
	public static function getInstanceConnexion($config)
	{
		//si la propriété $_instanceConnexion vaut null, créée la connexion, sinon renvoit sa valeur
		if (is_null(self::$_instanceConnexion))
		{
			self::$_instanceConnexion = new Connexion($config);
		}
		return self::$_instanceConnexion;
	}
 
	//fctions publiques pour obtenir et lire les infos de connexion
	public static function getHost()
	{
		return self::$_host;
	}
	public static function getBdd()
	{
		return self::$_bdd;
	}
	public static function getLogin()
	{
		return self::$_login;
	}
	public static function getPswd()
	{
		return self::$_pswd;
	}
 
	//destructeur
	public function __destruct()
	{
		//calcul du temps d'éxecution du script de connexion BDD en microsecondes
			//fin du script
			$this->_endTime = round(microtime(), "6");
			//calcul
			$this->_time = $this->_endTime - $this->_startTime;
			$this->_time = round($this->_time, "6");
			echo 	'<hr />Tps dbt : ' . $this->_startTime
					.'<br />Tps fin : ' . $this->_endTime
					.'<br />Temps d\'éxecution du script : ' . $this->_time;
    }
}
?>
Merci d'avance de vos conseils