Détruire un objet dans son constructeur [Résolu]

Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
- - Dernière réponse : MadM@tt
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
- 4 juin 2008 à 11:27
Bonjour à tous,

J'ai une classe :
class Compte {

    ...
// Constructeur

    function Compte( $ID ) {

       // Connexion à la BD et récupération des infos

      

       // Si echec, que faire ??

       return null;
    }

}

Voilà le problème c'est que si on arrive pas à retrouver les données, j'aimerais que celui qui a créé la classe puisse le savoir.
Je voulais donc faire un return null, pour que l'appelant ne reçoivent rien en faisant new Compte($Id).
Mais ça renvoie quand meme l'objet.

J'ai essayé unset($this) mais marche pas...

Avez vous une solution ?
Merci

- MadMatt -

 www.choisir-une-entreprise.com
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
30
Date d'inscription
vendredi 1 février 2008
Dernière intervention
26 janvier 2011
3
Merci
Bonjour,

En objet, tu ne peux pas demander d'instancier un objet et lui dire dans le contructeur de se détruire si une erreur se produit.
Faire : $mon_compte = new Compte($id); te renverra toujours une instance de la classe "Compte".

En PHP5, tu peux éventuellement lancer une exception : throw new Exception('Ton message d\'erreur');
que tu traitera dans un bloc try - catch

En PHP4 (comme en 5), tu pourrais te créer une variable membre "$loaded" initialisée à false et que tu mettras à true quand ton objet
sera chargé. Reste à créer une méthode "isLoaded()" qui retourne simplement la valeur de cette variable afin de savoir si tout c'est bien passé.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zpef
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
0
Merci
Ok pour la méthode isLoaded(), pour l'instant je vérifiais si l'ID était > 0 (mais c'est plus propre avec ta méthode).

Merci !

- MadMatt -

 www.choisir-une-entreprise.com
Commenter la réponse de MadM@tt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.