Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
Non aux booléens !
Dernièrement, en relisant un ancien script, je suis tombé sur une ligne du type "ma_fonction( true, false, false, true)".
Et là, je me suis dit : "heu .. ça correspond à quoi ces paramètres, je ne me rappelle plus !".
En effet, lorsque l'on n'a pas la signature de la fonction sous les yeux, ce type de paramètre devient complètement illisible.
Comparez ceci :
<?php
affiche_formulaire( true, false, false, true );
?>
et
<?php
affiche_formulaire( ACCESS_VISITEUR, SANS_EMAIL, SANS_IDENTIFICATION, TEST_TURING );
?>
Cette dernière ligne de code n'est-elle pas plus explicite ?
En fait ce n'est pas exactement les booléens qu'il faut bannir mais toutes formes de paramètres sans signification claire.
Ainsi, "setOptions(TITRE + DESCRIPTION)" est plus lisible que "setOption( 3 )".
Bon, c'est peut-être bateau comme remarque, mais je constate que beaucoup d'auteurs de scripts utilisent les paramètres booléens sans définir de constantes, obligeant leurs utilisateurs à écrire d'obscures fonctions ou à définir eux-même des constantes.
D'ailleurs, un booléen est-il toujours nécessaire ?
Dans l'exemple "affiche_formulaire", j'aurais pu définir les constantes suivantes :
<?php
define('ACCESS_VISITEUR', 1 );
define('EMAIL', 2 );
define('IDENTIFICATION', 4 );
define('TEST_TURING', 8 );
?>
Ensuite, il devient simple d'écrire une fonction prenant un seul paramètre comme ceci :
<?php
affiche_formulaire( ACCESS_VISITEUR + TEST_TURING ); // 1 + 8 = 9
?>
Enfin, le corps de ma fonction effectue les tests de la manière suivante :
<?php
// [..]
if( $options & ACCESS_VISITEUR ) // ...
if( $options & EMAIL ) // ...
if( $options & IDENTIFICATION ) // ...
if( $options & TEST_TURING ) // ...
// [..]
?>
Attention : Je vous conseille de préfixer vos constantes pour éviter toutes formes de conflits et de confusions.
Ex: "FORM_OPTION_ACCESS_VISITEUR"
Comme vous pouvez le voir, j'utilise l'opérateur binaire "&" qui permet de faire une sorte de filtrage.
Dans mon exemple, "$options & TEST_TURING" revient à faire "9 & 8", ce qui va me retourner "8" sachant qu'une valeur différente de "0" est assimilée à une condition "vrai". De même "$options & EMAIL" revient à faire "9 & 2", ce qui me donne "0" lui-même assimilé à "faux".
Remarque: Si vous ne maîtrisez pas la logique binaire, je ne peux malheureusement pas vous aider plus et je vous invite à lire quelques articles à ce sujet, disponible sur le Net.
Alors, avez-vous vraiment besoin de booléens ?
Par Frédéric Bouchery
