Utilisation du OR

Mammouth du PHP | 19672 Messages

07 août 2006, 20:48

Avec un "OU" il suffit qu'une valeur soit Vrai pour que l'ensemble soit Vrai
Avec un "ET" il faut que toutes les valeurs soient Vrai pour que l'ensemble soit Vrai
Ha ben là c'est beaucoup plus simple et donc mon intuition était juste: c'est une question de conventions. Suffit de le savoir :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 août 2006, 00:54

Tant qu'on y est, il y a également un XOR qui existe. Non, je ne parle pas du sheriff de l'espace mais du "ou exclusif" (eXclusive OR) qui vérifie que une seule seulement des conditions est réalisée :

variable = (TRUE xor TRUE); // variable = FALSE
variable = (TRUE xor FALSE); // variable = TRUE
variable = (FALSE xor TRUE); // variable = TRUE
variable = (FALSE xor FALSE); // variable = FALSE

Eléphant du PHP | 60 Messages

08 août 2006, 19:06

En conclusion,

Pour moi, OR, AND, XOR ou NAND sont des opérations bouléenne de base (calcul en base 2).

Donc une petite explication sur ma démarche s'impose.

Quand j'utilise ce code :
$bGestMemb = ($obSes->fctSessionDroit(ADHERENT) or $obSes->fctSessionDroit(ADMIN)); 
Je calcule une variable ($bGestMemb) : tout simplement je regarde si le lecteur de la page a les droits que j'ai prédéfinis ADHERENT ou ADMIN.

J'utilise ce code lorsque j'ai besoin de cette information à divers endroits de ma page.


Par contre si j'utilise cette information une seule fois dans le script de ma page j'utilise le code :
if ($obSes->fctSessionDroit(ADHERENT) or $obSes->fctSessionDroit(ADMIN))
{
....un segment de code....
}
Mais comme l'a fort justement proposé Cyrano, dans le premier cas j'aurai pu utiliser :
$bGestMemb = ($obSes->fctSessionDroit(ADHERENT) or $obSes->fctSessionDroit(ADMIN)) ? true : false; 
Dans un code la lisibilité est très importante, mais comme l'illustre nos échanges ci-dessus, nous ne lisons pas tous pareil.

Amicalement

Stéphane