problème lors de deux inclusions

Petit nouveau ! | 2 Messages

18 févr. 2006, 17:39

Bonjour,

je possède 3 fichiers :
- 1 classe (user.class.php) permettant de gérer les utilisateurs (authentification, ajout, etc...),
- 1 fichier de conf contenant mes variables de connexion (j'utilise PEAR:DB)
- 1 fichier PHP (register.php) permettant d'enregistrer les nouveaux utilisateurs (fait appel à user.class.php)

Ayant besoin de faire appel à ma base dans ma classe et mon fichier register.php, j'ai fait 2 require_once de mon fichier de conf mais j'ai le message 'DB error' car ma variable n'est plus initialisée.
Après recherche, j'ai constaté que PHP5 ne supporte pas les deux appels (je dois en supprimer un), j'ai choisi de supprimer celui de ma classe et de passer ma variable de connexion en paramètre à mon constructeur.

Je trouve pas cela très propre surtout si je dois passer plusieurs variables à mon objet.
Avez vous déjà rencontré ce problème, si oui comment vous vous en êtes sortis ?

Merci d'avance.

Eléphant du PHP | 281 Messages

18 févr. 2006, 18:38

Salut,

C'est un problème qui n'en est pas un si j'ai bien compris.

Le seul moyen de déclarer une variable qui aurait une portée sur tout tes scripts serait de déclarer une constante. Or pour un objet de base de donnée je ne penses pas que ce soit une bonne idée.

Ce que je fais c'est ce que tu as dit dans ton message :

- T'initialise une nouvelle connexion
- Tu stocke une référence de celle-ci dans une variable

Je n'en suis pas sur mais je crois que Pear:DB stocke cette référence dans un champ dont tu as juste à récupérer la valeur.

- Tu la passe au constructeur de ta classe
- Le constructeur stocke cette référence dans un champ privé.

A partir de la tu peux effectuer des requêtes sans problème dans ta classe.

@+

ViPHP
ViPHP | 656 Messages

18 févr. 2006, 18:39

require_once n'inclus qu'une fois le fichier même si tu l'écris 20 fois.

Utilise un require normale.

Petit nouveau ! | 2 Messages

19 févr. 2006, 15:26

Ouaibou, c'est ce que j'avais fais pour répondre au problème, pratique si on a pas beaucoup de variables a passer au constructeur.
Ultiny ta solution marche impeccable, je vais rester la dessus.

J'étais d'ailleurs étonné de ne pas voir ce genre de souci sur les forums. Ceux qui renconteront ce problème auront donc deux choix possibles. :wink:

Merci à vous deux et bonne continuation.