Bonjour,

je cherche un détruire un objet pour arrêter la connexion au serveur MySQL. Seulement, mon objet se détruit 2 fois ; une fois à l'appel de __destruct et une autre fois à la fin du script.

La classe :

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
<?php
/*-------------------------------------------------------------
IPDO - classe singleton
-------------------------------------------------------------*/
 
class IPDO {
 
  private static $PDOinstance = null;
 
  private function __construct() { 
 
	try {
 
    $this->PDOinstance = new PDO('mysql:host='.DB_serveur.';charset='.Encodage.';port='.DB_port.';dbname='.DB_base, DB_user, DB_mdp);
 
	}
 
	catch (PDOException $e) {
 
	  // erreur
 
    }
 
  }
 
  public static function Connecter() {
 
    if (is_null(self::$PDOinstance)) {
 
      self::$PDOinstance = new IPDO(); 
 
    }
 
    return self::$PDOinstance;
 
  }
 
  public function __destruct() {
 
	echo 'objet detruit';
 
  }
 
}
 
?>

que je crée et détruit comme ceci :

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$connexion = IPDO::Connecter();
$connexion->__destruct();

et le résultat :

Citation Envoyé par Mon navigateur
objet detruitobjet detruit
J'en déduis que je détruis bien l'objet et qu'il est détruit une nouvelle fois à la fin du script mais je ne comprend pas pourquoi j'obtiens ce résultat.

----édit----

Il suffisait d'utiliser

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$connexion = IPDO::Connecter();
unset($connexion); // destruction  ou $connexion = null;

désolé pour le dérangement