Page 1 sur 1

PHP5 POO methode pour fermer la connexion ?

Posté : 29 janv. 2010, 12:18
par singleton
Bonjour à toutes et à tous,

Je suis nouveau sur ce forum :D donc une présentation rapide :
J'ai 19 ans, je viens juste de terminer une formation bac+2 de développeur internet et multimédia option analyste programmeur, en alternance dans une grande société de stratégie digital en poste de développeur / intégrateur. Je viens tout juste de finir cette formation et je suis actuellement auto-entrepreneur dans les services informatiques. Bon voila rapidement je vais pas m'étaler sur ma vie.


Et je suis face à un petit soucis #-o, voila, je dispose d'une classe de connexion SQL avec un singleton
<?php
class SqlConnexion {
	// instance
	private static $instance;
	
	// constructeur privé : empeche la création directe d'objet
	private function __construct() {
		$connexion = mysql_connect("localhost","root","");
		
		if (!$connexion) {
			die ("connexion impossible"); 
		}
		
		if(!mysql_select_db("votes", $connexion)) {
			die ("Database incorrecte"); 
		} else {
			echo "Connecté à la BDD !";
		}
	}
	
	public static function singleton() {
		if(!isset(self::$instance)) { // Verifie une instance unique de la classe
			$myClass = __CLASS__;
			self::$instance = new $myClass;
		}
		
		return self::$instance;
	}
	
	// une methode
	public function bar() {
		echo 'foo';
	}
	
	public function __clone() {
		trigger_error('Le clônage n\'est pas autorisé. ', E_USER_ERROR);
	}

	public function exec($requete) {
		if(mysql_query($requete);) {
			return true; 
		}
	}
	
	public function close($connexion) {
		mysql_close($connexion);
	}
}
?>
J'aimerais pour voir faire des requetes SQL de cette façon :
<?php
require_once("SqlConnexion.php");

$O_SqlConnexion = SqlConnexion::singleton();

$O_SqlConnexion->exec("INSERT INTO test VALUES('', 'test')");

// fermer connexion ??
?>
Comment fermer la connexion en passant un $connexion ?? avec $O_SqlConnexion->close(???);

Merci d'avance :roll:

Re: PHP5 POO methode pour fermer la connexion ?

Posté : 29 janv. 2010, 13:21
par Nours312
ou en ajoutant une methode _destrut(){self::close();}
la connexion se fermera seule quand tu n'en aura plus besoin !...
et en mettant $connexion en attribut static ... non ?
qu'en penses tu ?

Re: PHP5 POO methode pour fermer la connexion ?

Posté : 29 janv. 2010, 13:36
par singleton
ou en ajoutant une methode _destrut(){self::close();}
la connexion se fermera seule quand tu n'en aura plus besoin !...
et en mettant $connexion en attribut static ... non ?
qu'en penses tu ?
Salut, merci pour ta réponse,
<?php function _destruct(){ self::close(); } ?>
me semble adapté =D>

Merci ;=)

Voici mon code corrigé :

Ma classe :
<?php
class SqlConnexion {
        // instance
        private static $instance;
		public static $connexion;
       
        // constructeur privé : empeche la création directe d'objet
        private function __construct() {
                self::$connexion = mysql_connect("localhost","root","");
               
                if (!self::$connexion) {
                        die ("connexion impossible");
                }
               
                if(!mysql_select_db("votes", self::$connexion)) {
                        die ("Database incorrecte");
                } else {
                        echo "Connexion ouverte ! <br />";
                }
        }
       
        public static function singleton() {
                if(!isset(self::$instance)) { // Verifie une instance unique de la classe
                        $myClass = __CLASS__;
                        self::$instance = new $myClass;
                }
               
                return self::$instance;
        }
       
        // une methode
        public function bar() {
                echo 'foo';
        }
       
        public function __clone() {
                trigger_error('Le clônage n\'est pas autorisé. ', E_USER_ERROR);
        }

        public function exec($requete) {
                if(mysql_query($requete, self::$connexion)) {
					echo 'La requête '.$requete.' à été executée avec succès<br />';
                    return true;
                }
        }
		
		public function __destruct(){
			self::close();
		}
		
		public function close() {
			mysql_close(self::$connexion);
			echo 'connexion fermé';
        }
}
?>
Mon index :
<?php
require_once("SqlConnexion.php");

$O_SqlConnexion = SqlConnexion::singleton();

$O_SqlConnexion->exec("INSERT INTO plop VALUES('', 'test')");
?>

Re: PHP5 POO methode pour fermer la connexion ?

Posté : 29 janv. 2010, 15:13
par stealth35
la connexion se ferme automatiquement a la fin du script, donc a part si tu creer plusieurs instance de ta connexion, ca sert a rien

http://php.net/manual/fr/function.mysql-close.php

comme tu fais de le OOP, je te conseil d'allé faire un tout du coté de PDO

http://fr.php.net/manual/en/book.pdo.php

:wink:

Re: PHP5 POO methode pour fermer la connexion ?

Posté : 29 janv. 2010, 15:24
par singleton
la connexion se ferme automatiquement a la fin du script, donc a part si tu creer plusieurs instance de ta connexion, ca sert a rien

http://php.net/manual/fr/function.mysql-close.php

comme tu fais de le OOP, je te conseil d'allé faire un tout du coté de PDO

http://fr.php.net/manual/en/book.pdo.php

:wink:
Merci pour PDO.