Page 1 sur 1

Organisation d'une classe - Demande de conseils

Posté : 24 sept. 2010, 15:15
par Teddy
Bonjour,

Je suis novice dans la POO, mais j'ai déjà codé quelques classes. Je suis sur un gros projet et mes premiers problèmes arrivent.

Je souhaite faire une classe "Membre".

Voilà le code simplifié :

Code : Tout sélectionner

class Membre { //Attributs //Function connexion //Function deconnexion //Function validerCompte //Function recevoirMailValidation //Function changerPass //Function changerMail //Etc }
Est-ce une bonne base ? Les requêtes seront gérés par un objet pdo. On m'a dit que je ne devais pas mettre les méthodes connexion et deconnexion dans cette classe, je comprends pas pourquoi, pour moi elles doivent être ici.

Qu'en pensez-vous ?

Merci d'avance

Re: Organisation d'une classe - Demande de conseils

Posté : 24 sept. 2010, 15:40
par Cyrano
Le conseil est avisé : tu devrais créer une classe de connexion à part et en passer l'instance au constructeur de ta classe membre : dans ce cas, les méthodes en disposeraient mais tu ne mélangeras pas les genres.

Une classe ne fait qu'une seule chose, ne traite qu'une seule sorte de données, et le fait bien. Gérer une entité/groupe de données comme ici « membre », c'est une chose, gérer la connexion à un SGBD, c'en est une autre.

Et puis en fait, si tu y réfléchis un petit peu : ton application doit traiter d'autres types de données : si tu crées d'autres classes du même ordre que ta classe membre, penses-tu qu'il serait rationnel de répéter dans toutes le code de connexion à ton sgbd ? Ça va être sympa si tu dois changer les paramètres de connexion et que tu as 200 classes de traitement à mettre à jour ;)

Re: Organisation d'une classe - Demande de conseils

Posté : 24 sept. 2010, 16:45
par Teddy
Merci pour ta réponse :)

Donc 2 classes : connexion et membre.
Une fois la connexion établit, je créer un nouveau membre. C'est vrai que c'est bien plus logique comme ça.

Par contre, pas de soucis pour les autres méthodes ? Par exemple changerPass() doit bien être dans la classe Membre ? Je fais passer l'objet pdo en paramètre.

Re: Organisation d'une classe - Demande de conseils

Posté : 24 sept. 2010, 16:54
par Cyrano
Ben pour ta classe, commence par définir les propriétés : la liste te guidera plus sûrement sur la définition des méthodes. Ces propriétés sont quoi ? à priori je dirais d'abord les colonnes de tables correspondantes, ensuite ton instance de connexion. Et éventuellement d'autres éléments qui se révèleront nécessaires.

Ce qu'il y a, c'est que ta classe de connexion devra avoir des méthodes publiques pour qu'elles puissent être appelées depuis l'extérieur : ta classe membre recevra en effet cette instance en paramètre, elle n'en héritera pas et il n'y a pas de raison technique valable pour qu'elle le fasse. Et dans ce cas, dans tes méthodes, tu auras des lignes du genre $this->_cnx->execute('...');

Re: Organisation d'une classe - Demande de conseils

Posté : 24 sept. 2010, 19:18
par Teddy
Merci pour tous ces conseils :)