[SPIP Zone] PHP et les opérateurs logiques && || and or

Yop,

je vois régulièrement des AND dans le code PHP de SPIP et de plugins.
En fait il y a un mélange de && et de and sans distinction.

Juste un petit rappel : && et and ne sont pas équivalents, and et or sont des opérateurs avec une priorité plus basse que && et ||

Alors c'est peut être plus facile à lire pour certains, mais ça peut être totalement contre productif, dans le cas d'une affectation par exemple :

<?php
$bool = true && false;
var_dump($bool); // false, that's expected

$bool = true and false;
var_dump($bool); // true, ouch!
?>

https://secure.php.net/manual/fr/language.operators.precedence.php

Perso, je n'utilise que && et ||

--
nicod_

Le 29/04/2018 à 16:56, nicod_ a écrit :

Perso, je n'utilise que && et ||

Je pense qu'à aucun moment il n'est bien de compter sur des priorités
*implicites*. Pour la lisibilité, je pense qu'il est mieux d'être
explicite et du coup tant qu'à faire en profiter pour utiliser des
opérateurs plus lisibles, à partir du moment où on est explicite.

$truc = ($machin and $bidule)

Cela dit l'immense majorité du temps c'est plutôt dans des if (), et
d'ailleurs dans ce cas c'est très bien que le and passe après

if (
    $machin = config_truc()
    and $deuxième != $condition
    and $caca = prout()
)

--
RastaPopoulos

Hop,

Le 29/04/2018 à 16:56, nicod_ a écrit :

Yop,

je vois régulièrement des AND dans le code PHP de SPIP et de plugins.
En fait il y a un mélange de && et de and sans distinction.

Juste un petit rappel : && et and ne sont pas équivalents, and et or sont des opérateurs avec une priorité plus basse que && et ||

je croyais me souvenir qu'on avait acté l'utilisation de and et or en minuscules au lieu de && et ||, mais je n'en trouve aucune trace dans nos règles de codage et dans les PSR associées :

J'ai rêvé ou les PSR ont changé depuis ?

++
b_b