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] Fonctionnement des destructeurs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 233
    Points : 122
    Points
    122
    Par défaut [POO] Fonctionnement des destructeurs
    Bongour,

    En programmation objet sous php5, je ne comprend pas quand les objets sous détruit puisqu'il n'y a pas de delete. Est-ce lorsque l'on arrive à la fin de la page?
    ou quand on change de page?

    Et j'en viens à mon cas particulier, que j'ai pas encore programmer :
    Soit j'aurais une classe dérivé de la classe "Exception". D'autre part, j'ai une autre classe spécialement pour l'accès à la base de donnée (connexion, retourne résultat sous différents formats, ajout enregistrement...etc). Et à chaque erreur, je lève une exeption du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(erreur) throw new class_derive_exception;
    .

    Puis, lorsque j'utilise une méthode de cette classe, je l'encadre avec "try" et "catch" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try{class_BDD->fct();} catch{ FONCTION(); }
    Et je voudrait savoir ce qui se passe si la fonction "FONCTION()" est une fonction de redirrection du style "Location : page_futur.html".

    Le destructeur de la classe "class_derive_exception" sera t'il exécuté? C'est important dans le cas où ce même destructeur ferme un fichier (fichier de journal d'erreur).

    D'avance Merki....

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 263
    Points : 15 573
    Points
    15 573
    Par défaut
    le destructeur est automatiquement appelé à la sortie du script ou quand on fait "$objet = NULL;" ou "unset($objet);"

    regarde là :
    http://php.net/oop5.decon

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 233
    Points : 122
    Points
    122
    Par défaut suite
    merci pour ta reponse rapide. ce "unset" doit etre l'equivalent du delete en c++ dans ce cas la. Mais si je fais une redirrection, le destructeur sera t'il appele ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 263
    Points : 15 573
    Points
    15 573
    Par défaut
    Citation Envoyé par kuja2053 Voir le message
    si je fais une redirrection, le destructeur sera t'il appele ?
    oui tout est appelé automatiquement à la fin du script : destructeurs, fermetures des connexions au bases de données, libération des ressources

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 233
    Points : 122
    Points
    122
    Par défaut
    Merki beaucoup!!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je me permets de réouvrir ce topic pour me faire préciser quelque chose. Dans la doc PHP, j'ai lu :

    Le destructeur est appelé durant l'arrêt du script, donc les en-têtes sont toujours déjà envoyés.
    Est-ce à dire que si on ne détruit pas l'objet explicitement, PHP se charge de faire le ménage complet à la fin du script ?

    Je croyais que PHP avait un garbage collector. Du coup, je ne détruis rien moi... C'est grave docteur ?

    Vous me confirmez bien que si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    test.php
    <?php
      class essai {
        public $a = "kkkkk";
      }
     
      $t = new essai;
      echo "bonjour";
    ?>
    Si j'appelle test.php, le navigateur écrira "bonjour", puis côté serveur, la mémoire sera clean, je veux dire sans fuite ?

    Dans un autre topic que je viens de poster, je relate un problème que j'ai en cas de charge sur le serveur, à savoir APACHE qui tombe avec un status 3221225477. Pourrait-ce venir de là ?

    @++, Stéphane.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/01/2010, 18h14
  2. [POO] Appel des destructeurs
    Par Merfolk dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2008, 17h59
  3. Fonctionnement des fichiers.
    Par phoenix440 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 29/05/2005, 15h36
  4. Réponses: 13
    Dernier message: 28/08/2004, 18h43
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

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