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

MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention - 4 juin 2008 à 10:24 - Dernière réponse : MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention
- 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
zpef 30 Messages postés vendredi 1 février 2008Date d'inscription 26 janvier 2011 Dernière intervention - 4 juin 2008 à 11:25
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é.

Merci zpef 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de zpef
MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention - 4 juin 2008 à 11:27
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.