Besoin d'un avis sur singleton de connexion
Posté : 25 sept. 2012, 10:45
Bonjour,
je prépare actuellement ma soutenance et lors de mon stage j'avais fait le singleton de connexion ci-dessous.
Seulement je pense que les setter privés n'avaient pas leur utilité puisqu'on les appelle directement dans cette classe. Pourriez-vous me le confirmer ?
Un grand merci pour votre réponse !
je prépare actuellement ma soutenance et lors de mon stage j'avais fait le singleton de connexion ci-dessous.
Seulement je pense que les setter privés n'avaient pas leur utilité puisqu'on les appelle directement dans cette classe. Pourriez-vous me le confirmer ?
Un grand merci pour votre réponse !
<?php
require_once 'general_functions.php';
class singletonConnexionBD {
// Connexion definie par:
// identifiant connexion
public static $_id;
//serveur
private $_hostname = "localhost";
// Login
private $_username = "root";
// Password
private $_userpwd = "";
// Nom BD
private $_dbname = "ajeslic_nov";
//
private $_createBase = FALSE;
//
private $_configDir = "";
// Instance static de Connexion
private static $_instanceConnexion;
// Setter
private function setHostname($hostname) {
if (!isset($hostname)) { // test si la variable est initialisée
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_hostname = $hostname;
}
}
private function setUsername($username) {
if (!isset($username)) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_username = $username;
}
}
private function setUserpwd($userpwd) {
if (!isset($userpwd)) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_userpwd = $userpwd;
}
}
private function setDbname($dbname) {
if (!isset($dbname)) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_dbname = $dbname;
}
}
private function setCreateBase($createBase) {
if (!isset($createBase)) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_createBase = $createBase;
}
}
private function setConfigdir($configDir) {
if (!isset($configDir)) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
} else {
$this->_configDir = $configDir;
}
}
// Ouverture de la connexion et sélection de la base
private function connectToDB($hostname, $username, $userpwd, $dbname, $createBase = FALSE, $configDir="") {
// Open a connection to a MySQL server.
$connection = mysql_connect($hostname, $username, $userpwd);
//echo'connexion ok';
if ($connection == FALSE) {
displayErrorAndExit('Impossible de se connecter au serveur MySQL : ' . mysql_error());
}
// Select the MySQL database
$db = mysql_select_db($dbname, $connection);
if ($db == FALSE AND $createBase == TRUE) {
// create the database if needed when asked
$query = 'CREATE DATABASE ' . $dbname;
if (mysql_query($query, $connection) == FALSE) {
displayErrorAndExit('Impossible de cr�er la base de donn�es : ' . mysql_error());
} else {
// create all database tables
createDbTables($configDir);
$db = mysql_select_db($dbname, $connection);
}
} elseif ($db == FALSE and $createBase == FALSE) {
// return an error when the database does not exist if it's not asked to create it
displayErrorAndExit('Impossible de s�lectionner la base de donn�es : ' . mysql_error());
}
return $connection;
}
// Constructeur de la classe Connexion
private function __construct($hostname, $username, $userpwd, $dbname, $createBase = FALSE, $configDir="") {
//Methodes permettant l'acces en ecriture des variables
$this->setHostname($hostname);
$this->setUsername($username);
$this->setUserpwd($userpwd);
$this->setDbname($dbname);
$this->setCreateBase($createBase);
$this->setConfigdir($configDir);
//Tentative de connexion à la base
try {
self::$_id = $this->connectToDB($this->_hostname, $this->_username, $this->_userpwd, $this->_dbname, $this->_createBase, $this->_configDir);
} catch (Exception $e) {
$e->getMessage();
}
}
// Création d'une instance de connexion
public static function getInstanceConnexion($hostname, $username, $userpwd, $dbname, $createBase = FALSE, $configDir="") {
if (is_null(self::$_id)) {
$c = __CLASS__;
self::$_instanceConnexion = new $c($hostname, $username, $userpwd, $dbname, $createBase, $configDir);
}
return self::$_instanceConnexion;
}
public function getConnexionDatabase() {
return self::$_id;
}
////Destruction de l'instance de connexion
// public function __destruct() {
// if (isset(self::$_id) && !empty(self::$_id)) {
// mysql_close(self::$_id);
// is_null(self::$_id);
// }
// }
public static function close($id) {
if (isset($id) && !empty($id)) {
mysql_close($id);
self::$_id = null;
}}
public function __clone() {
trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR);
}
}
?>