Revenir au code
- 23/07/2008
Développement://
Revenir au codeDe retour sur un code un peu trop longtemps délaissé (un peu comme ce blog), je tombe sur ces lignes de PHP dans un bloc d'initialisation de test.
$Membre = new CMembres(0);
$Membre->LierAGroupe(1);
La variable $membre n'est utilisée nulle part ailleurs, pourtant quand je désactive l'une des lignes ou les deux, un test plante. Donc ces lignes sont utiles, mais en quoi?
Le "1" identifie un groupe créé un peu plus haut, c'est clair. la classe CMembres sert à manipuler la table éponyme et ses dépendances (les tables qui lui apportent des informations relationnelles). Par contre le "0"...
A cet endroit là, ce doit être un identifiant de membre, de personne inscrite, sauf qu'il n'y a par construction pas de membre zéro... sauf... sauf... le membre "visiteur non enregistré", qui est un membre particulier : il a des droits d'accès sans pour autant avoir un compte propre, d'où l'idée de lui donner l'identifiant zéro.
Réaction immédiate : création d'une constante explicite, et le code devient$Membre = new CMembres(MEMBRE_VISITEUR);
$Membre->LierAGroupe(1);
Seconde étape, cherchez dans mon code les zéros qui portent cette information de "membre visiteur", en les distinguant par exemple des zéros qui signifient "taille nulle"... En fait après relecture rapide je ne pense pas en avoir oublié, et ils étaient tous soit dans des tests qui sécurisent les droits d'accès, soit dans la classe Session qui a pour mission d'accompagner l'internaute en fournissant les données nécessaires. Donc une répartition plutôt logique et limitée, ce qui est plutôt positif et montre une faible dispersion de cette notion de "visiteur".
C'était mes réflexions du moment sur le code. D'un côté quand on relit son propre code on le voit un peu plus comme le verront les autres, et on le rend meilleur. De l'autre une notion explicite est mieux qu'une implicite, et moins elle est dispersée mieux on pourra la surveiller.
Rubriques des billets
- Agilité - 16 billets
- Archerie - 8 billets
- Avis - 51 billets
- Cultures - 10 billets
- Délires - 35 billets
- Démocrachie - 6 billets
- Développement - 27 billets
- Développement web - 23 billets
- Ergonomie - 17 billets
- Geekerie - 11 billets
- Inclassable - 5 billets
- Informatique - 19 billets
- Japon - 3 billets
- Littératures - 34 billets
- PHP - 5 billets
- Poor Lonesome Coder - 19 billets
- Régalons-nous - 6 billets
- Sortons! - 2 billets
- Travail - 16 billets
- Voyages - 2 billets
- Webmasteriat - 18 billets
Commentaires(s)
- 2008-07-23 13:30:50 - Laurentj
Si tu es en PHP5, utiliser une constante de classe est préférable au define
class CMembres {
public const VISITEUR = 0;
}
$Membre = new CMembres(CMembres::VISITEUR);
Ça évite ainsi les possibles collisions avec d'autres scripts, ça rend le code plus explicite car si on tombe sur un MEMBRE_VISITEUR, on peut encore se demander à quoi ça correspond. La relation avec la classe CMembres n'est pas vraiment établie. Tandis qu'avec une constante de classe, il n'y a plus d'ambigüité ;-) - 2008-07-23 14:02:50 - Cédric
Bien sûr, pourquoi n'y ais-je pas pensé! J'ai hésité sur l'endroit où déclarer ma constante, mais tu réponds à ce problème bien élégamment! Merci!
Je suis en PHP5 mais n'ai clairement pas intégré toutes ses fonctionnalités.
Ecrire votre commentaire
23/07/2008 - Systeme