begin process at 2012 05 31 15:35:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Singleton : intérêt et bon fonctionnement ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Singleton : intérêt et bon fonctionnement ?

dimanche 16 août 2009 à 21:10:47 | Singleton : intérêt et bon fonctionnement ?

eltyty

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 :

Code PHP :

<?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 :


    Quel est mon erreur ?



    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...



    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.


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.

Voilà donc merci.

dimanche 16 août 2009 à 22:36:58 | Re : Singleton : intérêt et bon fonctionnement ?

nhervagault

Administrateur CodeS-SourceS

Salut,

Mettre la connexion dans un singleton c'est pas tres recommandé.

Il y a n connexions parallèle a une base de données.

Et les bases de données gère des pools de connexions.

Bon dev.

dimanche 16 août 2009 à 22:45:40 | Re : Singleton : intérêt et bon fonctionnement ?

eltyty

donc on ne met pas non plus les requêtes sql par exemple en singleton ??

lundi 17 août 2009 à 00:43:15 | Re : Singleton : intérêt et bon fonctionnement ?

eltyty

Voilà dans ce cas est-ce que cet exemple est mieux dans ce cas ?

Code PHP :

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);
}
}

Et au niveau de ma page index :
Code PHP :

//connexion
MySqlConnection::getInstance();

Le code html, mes requêtes sql puis :
Code PHP :

$o=MySqlConnection::getInstance();
$o->close();

Est-ce mieux sur le principe ?



Cette discussion est classée dans : sql, serveur, connexion, list, singleton


Répondre à ce message

Sujets en rapport avec ce message

connexion avec sql server [ par mabrouk ] bonjour, svp je travaille sur un poste client windows2000 server dans un domaine j'ai installé easyphp(php+apache+mysql), j'ai voulu se connecter a no PHP & SQL Serveur 2000 [ par syndrael ] Bonjour,Est-il possible de se connecter sur une base SQL Serveur 2000 avec Php ? Question bete, mais je préfére avoir une confirmation d'initiés car j connexion au serveur [ par mouhalc ] j'ai des problèmes pour me connecter à ma base de données qui se trouve sur le serveur de mon hébergeur.le message d'erreur est server host inconnu.me Pb de script entre php et mysql pour afficher une table [ par FloTheShark ] Salut à tous Voilà g free, donc host, sql.free.fr et ainsi de suite je veux faire afficher une table(ce qu'il y a à l'intérie Connection mssql_connect [ par galldup ] Je ne comprend pas très bien : Quand je me connecte au serveur SQL SERVER 2000 et que je selectionne la base de données nommée 'ESSAI', cela marche. tjr probleme de sessions. [ par Zebra1928 ] Hi all;j'ai toujours un probleme de sessions.qlq peut m'aider SVP ??, mon code est le suivant:******************************************************** connexion ftp [ par comunoty ] Bonjour, J'ai actuellement un compte chez free afin de pourvoir héberger mon site, et mon problème est le suivant. Je n'arrive que très rarement à me PHP/SQL chez Online.net [ par mouahaha ] Salut à tous... Pris d'inconscience, j'ai acquis chez Online.net un domaine sur lequel je devais heberger un site utilisant une base de données... Sau Pb... [ par taxidogkiller ] Bonjour, je suis un débutant en php ( je n'est que 13 ans ),  MYSQL me dit que j'ai une erreur mais je n'arrive pas à la voir ... (ce serait du coté d prob. de serveur sql [ par kdom ] BonjourEst ce que qlq pourrait m'aider? j'ai un prob.une des tables de ma base ne veut plus se remplir.A chaque tentative d'insertion, la base renvois


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales