cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011
-
16 août 2009 à 21:10
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011
-
17 août 2009 à 00:43
Bonjour,
je suis en train de me mettre sur la notion de singleton afin d'obtenir une seul connexion mais du coup j'ai quelques questions.
Actuellement moi j'ai un seul fichier qui fait une connexion au serveur et un pour les requêtes sql. Donc pour moi chaque utilisateur ne fait qu'une seul connexion au serveur donc je ne sais pas trop si la notion de singleton peu m'être utile...
Donc j'ai essayé de faire un fichier avec la connexion au serveur + les requêtes sql dans le même fichier afin de m'assurer de ne faire qu'une seule connexion afin de limiter le travail du serveur.
Voici ce que j'ai essayer de faire :
<?PHP
class MysqlConnection {
/**
* Propriété privée stockant une instance de la classe si MysqlConnection::getInstance() est appelé
* @var MysqlConnection
*/
private static $_instance = null;
private function __construct () {
//echo 'je suis une instance de MysqlConnection';
self::$instance = mysql_connect(SERVEUR, LOGIN, PASS) OR DIE (header("Location: ".ABS."/erreur.php?erreur=connexion base"));
//mysql_connect("cl2-sql4", "tyty14", "thetytyadmi") OR DIE (header("Location: ".ABS."/erreur.php?erreur=connexion base"));
mysql_select_db(BASE, self::$instance)OR DIE (header("Location: ".ABS."/erreur.php?erreur=base"));
mysql_query("SET NAMES 'utf8'");
}
/**
* Méthode implémentant le design pattern MysqlConnectionton
* @return MysqlConnection
*/
public static function getInstance() {
if(is_null(self::$_instance)) {
self::$_instance = new MysqlConnection();
}
return self::$_instance;
}
/**
* Méthode publique quelconque
*/
public function doSomething () {
echo 'requete';
}
public function query($query, $idRequete = 0) {
$this->sql_results[$idRequete] = mysql_query($query);
return (bool)$this->sql_results[$idRequete];
}
}
$o = MysqlConnection::getInstance ();
$o ->doSomething ();
?>
Par contre j'obtiens : Fatal error: Access to undeclared static property: MysqlConnection::$instance in ..... on line 13
Moralité de l'histoire voici mes questions :
[list]
Quel est mon erreur ?
/list [list]
Est-ce que le principe de créer un singleton avec la connexion serveur et les requêtes sql est judicieux. Car je trouve que ça permet de mieux organiser mais...
/list [list]
est-ce que le fait de faire une seule fois la connexion au serveur (à travers un seul fichier qui est appelé une fois par page) est suffisant.
/list Voilà merci à la personne qui pourra m'apporter ces quelques explicationns. Car je me demande toujours comment je peux faire pour qu'il y ai le moins de connexion possible et pour utiliser au mieux la POO car je vais être amener à utiliser ces modules que je développe : module d'authentification, formulaire de connexion, etc.
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 17 août 2009 à 00:43
Voilà dans ce cas est-ce que cet exemple est mieux dans ce cas ?
class MysqlConnection {
private static $instance;
private function __construct() {
self::$instance = mysql_connect(SERVEUR, LOGIN, PASS)OR DIE ("Impossible de se connecter au serveur - ".mysql_error());
mysql_select_db(BASE, self::$instance)OR DIE("Impossible de se connecter à la base ".mysql_error());
mysql_query("SET NAMES 'utf8'");
}
/***************************************************/
/* <SINGLETON> */
/***************************************************/
public static function getInstance() {
if(!isset(self::$instance) || self::$instance == null) {
new MySqlConnection();
}
return self::$instance;
}
public static function close(){
mysql_close(self::$instance);
}
}