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 :

Annuler la construction d'un objet


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 117
    Points : 67
    Points
    67
    Par défaut Annuler la construction d'un objet
    Bonjour,

    Je crois que je suis devant un cas d'école :
    Comment peut on quitter un constructeur en renvoyant une valeur remarquable (false, 0 , NULL) ?

    J'ai pensé à mettre $this à NULL ou 0, mais comment peut on le faire dans un constructeur ?

    Je ne comprends pas pourquoi ce code marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Foo { 
     
     function __construct()
     {
     
      return null;
     
     }
     
    }
     
    if (($foo = new Foo()) == null)
     echo "win";
    Merci d'avance pour vos réponses

  2. #2
    M.Gaetan89
    Invité(e)
    Par défaut
    Hello !

    Le but d'un constructeur est d'initialiser les attributs de la classe. Il ne peut renvoyer autre chose que l'instance de la classé crée.

    Dans quel but ton constructeur devrait-il renvoyer une valeur ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Comme le dit EmmaBlack.

    Un constructeur n'admet pas de return.

    Si une condition doit faire annuler la construction de l'objet, tu peux toujours le faire en levant une exception.

    http://fr.php.net/manual/fr/language.exceptions.php

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos réponses !

    Hmm c'est assez ennuyeux

    Tant pis je vais passer par une variable qui contrôle si l'objet est valide ou non.

    Bien cordialement.

  5. #5
    M.Gaetan89
    Invité(e)
    Par défaut
    Les exceptions, comme le suggère Petibidon ne permettent pas de faire ce que tu veux ?
    En reprenant l'exemple de ton premier post :
    Code : 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
    <?php
    class Foo
    { 
        function __construct()
        {
            if (CONDITION_POUR_ANNULER)
            {
                throw new Exception('Construction annulée.');
            }
        }
    }
     
    $foo = null;
    try
    {
        $foo = new Foo();
    }
    // On a lancé une exception, l'objet n'a pas été crée
    catch (Exception $e)
    {
        echo $e->getMessage();
    }

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

Discussions similaires

  1. Détection du mode de construction d'un objet
    Par ram-0000 dans le forum C++
    Réponses: 16
    Dernier message: 22/01/2009, 14h15
  2. Construction d'un objet à partir résultat d'une requêtte
    Par amine1980 dans le forum Hibernate
    Réponses: 3
    Dernier message: 11/12/2008, 17h32
  3. Construction d'un Objet
    Par julien1451 dans le forum C++
    Réponses: 1
    Dernier message: 18/10/2007, 23h03
  4. Réponses: 4
    Dernier message: 16/02/2006, 17h45
  5. [JInternalFrame] Annuler sa construction
    Par wonderyan dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 12/03/2005, 16h58

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