Singleton PDO

Eléphanteau du PHP | 15 Messages

26 mai 2011, 15:21

Bonjour,

J'essaye de créer un singleton pour gérer ma connexion avec PDO, le plus simple possible !

Le voici ->
class PDOModel {
	private static $_instance = null;
	
	private function __construct()
	{
	}
	
	public static function connect()
	{
		if(is_null(self::$_instance))
		{
			include CONFIG_PATH . '/DatabaseConfig.php' ;
			self::$_instance = new PDO(
				'mysql:host=' . $aDbConfig['host'] . ';dbname=' . $aDbConfig['name'] ,
				$aDbConfig['user'],
				$aDbConfig['pass']
			);
			self::$_instance->exec("SET CHARACTER SET utf8");
		}
		return self::$_instance ;
	}
	
	public static function disconnect()
	{
		if(is_null(self::$_instance)) return false ;
		
		self::$_instance = NULL ;
		
		return true ;
	}
}
J'utilise la method connect() sur deux variable différente et je récupère bien la même instance, en revanche lorsque je test ce morceau de code ->
	$oPDO = PDOModel::connect() ;
		$oPDO2 = PDOModel::connect() ;
		
		$aUser = $oPDO->query('SELECT * FROM bo_user LIMIT 0,1')->fetchAll(PDO::FETCH_ASSOC) ;
		
		PDOModel::disconnect() ;
		
		$aUser2 = $oPDO2->query('SELECT * FROM bo_user LIMIT 0,1')->fetchAll(PDO::FETCH_ASSOC) ;
		
		var_dump($oPDO) ; var_dump($oPDO2) ; var_dump($aUser); var_dump($aUser2) ;
Je devrais normalement récupérer le contenu de la base dans $aUser et $aUser2 ne devrais rien donner puisque j'ai déconnecté PDO entre les deux requête, pourtant $aUser2 retourne bien le contenue de la base.

Comment dois-je procédé pour déconnecté PDO ?

Eléphant du PHP | 275 Messages

26 mai 2011, 15:23

Implicit references strike again !

self::$_instance->disconnect existe pas ?

Eléphanteau du PHP | 15 Messages

26 mai 2011, 15:46

self::$_instance->disconnect() ;

Cette method n'existe pas car $_instance contient la class PDO et dans cette dernière la method disconnect n'existe pas (je ne suis pas sûre d'avoir compris ta question)

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2011, 01:59

php-oriente-objet/portee-global-connexi ... ml#p301515

c'est pas pour pdo mais pour le principe du singleton static