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] Détruire un objet pendant sa construction


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Points : 87
    Points
    87
    Par défaut [POO] Détruire un objet pendant sa construction
    Salut,
    je suis en php5 et je réalise un site avec une sauvegarde des sessions.

    J'ai un objet Authentification
    J'aimerais valider l'utilisateur pendant le constructeur de ce dernier. Seulement dans le cas ou l'utilisateur n'est pas reconnu, je n'ai trouvé aucun moyen d'avorter la construction de l'objet.
    Les appels à __destruct() et delete() n'ont rien donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    abstract class Auth {<div style="margin-left:40px">function __construct{<div style="margin-left:40px">...
    if(! $this->validate()) {<div style="margin-left:40px">//J'aimerais ici avorter le constructeur et surtout les constructeurs des classes filles !</div>}
    ...</div>}</div>}
    Je pensais peut-être à lever une exception...
    mais je n'y connais rien, alors si quelqu'un a une piste, même légère.

    Merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Exceptions =>
    http://fr.php.net/throw

    Sinon tu pourrais faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $u = new Auth();
    if ($u->isValid()) {
      // OK
    } else {
      // KO
    }

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    essaye sinon :

    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this = NULL;
    return;
    il me semblait que l'un des 2 marchait

    edit : tu peux essayer unset($this); aussi, meme si ca parait violent ;o)

  4. #4
    Membre régulier Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Points : 87
    Points
    87
    Par défaut
    merci pour le lien, je vais potasser ca tranquillement.
    J'espère que cela va marcher dans mon cas.

    Citation Envoyé par Mr N.
    Sinon tu pourrais faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $u = new Auth();
    if ($u->isValid()) {
      // OK
    } else {
      // KO
    }
    En fait c'est actuellement ce que je fait. Le problème est que mes classes filles héritant de Auth ne sont pas forcément écrite par moi...
    Et le code de __construct risque de s'exécuter avant la validation.

    Je pourrai très bien prendre le parti d'appeler une fonction d'Initialisation intermédiaire, mais j'ai eu le complexe du Mr propre ce matin

    edit: @flagnag: désolé mais aucune de tes solutions ne fonctionnent :s peut-être cela fonctionnait il avec php4 avant ?!

  5. #5
    Membre régulier Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Points : 87
    Points
    87
    Par défaut
    Bien, cela fonctionne a merveille avec les exceptions, exactement le comportement que je souhaitai !

    merci à vous

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

Discussions similaires

  1. [POO] Calendrier et passage d' objet en parametre
    Par julienr dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/11/2007, 22h18
  2. Aide sur POO :: Classe et liste d'objet
    Par Andry dans le forum Langage
    Réponses: 1
    Dernier message: 23/01/2006, 15h51
  3. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  4. [POO] projet ->soutirer les classes objets
    Par .:dev:. dans le forum C++
    Réponses: 10
    Dernier message: 14/06/2005, 23h05
  5. Rendre dispo un objet pendant la tt la session
    Par brousaille dans le forum Servlets/JSP
    Réponses: 20
    Dernier message: 18/01/2005, 14h57

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