IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] detruire un objet __destruct


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut [POO] detruire un objet __destruct
    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

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Par défaut
    Encore plus propre, c'est de mettre ce code dans le __destruct().
    Cette méthode est appelée toute seule à la fin du script

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    Ici, je veux appeler le destructeur pour déconnecter du serveur mysql. Donc à priori autant détruire l'objet. (il est vrai que ce n'est pas spécifié dans le code)

    Ceci dit, je n'ai pas vraiment réussi vu que mon instance ($PDOinstance) est quand même accessible après destruction de l'objet (la classe est étendue). J'ai un peu fouillé au niveau des agrégations, composition. Mais bon, plus le temps en ce moment, je guérirai mais lacunes en POO plus tard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  2. [POO] Détruire un objet pendant sa construction
    Par raoulchatigre dans le forum Langage
    Réponses: 4
    Dernier message: 23/05/2006, 11h00
  3. [POO] fonction toUpperCase : Objet attendu
    Par LineLe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2005, 16h51
  4. [POO] Passer un objet HTML en argument.
    Par defacta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2004, 10h44
  5. [Débutant]Detruire un objet
    Par wkd dans le forum Débuter
    Réponses: 5
    Dernier message: 22/05/2004, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo