web-dev-qa-db-fra.com

Booléens majuscules et minuscules dans PHP

Quand j'apprenais PHP, j'ai lu quelque part que vous devriez toujours utiliser les versions majuscules des booléens, TRUE et FALSE, parce que les versions "normales" en minuscules, true et false, n'était pas "sûr" à utiliser.

Cela fait maintenant de nombreuses années, et chaque script PHP que j'ai écrit utilise la version majuscule. Maintenant, cependant, je le remets en question, car j'ai vu beaucoup de PHP écrit avec la version minuscule (ie Zend Framework).

Y a-t-il/Y a-t-il déjà eu une raison d'utiliser la version majuscule, ou est-ce parfaitement acceptable d'utiliser la minuscule?

edit: J'ai oublié de mentionner que cela s'applique également à NULL et null.

122
Austin Hyde

officiel PHP manual dit:

Pour spécifier un littéral booléen, utilisez les mots-clés TRUE ou FALSE. Les deux ne respectent pas la casse.

Donc voilà, true === TRUE et false === FALSE.

Personnellement, cependant, je préfère TRUE à true et FALSE à false pour des raisons de lisibilité. C'est la même raison pour laquelle je préfère utiliser OR plutôt que or ou ||, et en utilisant AND sur and ou &&.

La norme PSR-2 requiert que true, false et null soient en minuscules.

81
Lukman
define('TRUE', false);
define('FALSE', true);

Bon débogage! (PHP < 5.1.3 (2 mai 2006) , voir Démo )

Edit: Les bools majuscules sont des constantes et les minuscules sont des valeurs. Vous êtes intéressé par la valeur, pas par la constante, qui peut facilement changer.


Eliminated run-time constant fetching for TRUE, FALSE and NULL

author      dmitry <dmitry>
            Wed, 15 Mar 2006 09:04:48 +0000 (09:04 +0000)
committer   dmitry <dmitry>
            Wed, 15 Mar 2006 09:04:48 +0000 (09:04 +0000)
commit      d51599dfcd3282049c7a91809bb83f665af23b69
tree        05b23b2f97cf59422ff71cc6a093e174dbdecbd3
parent      a623645b6fd66c14f401bb2c9e4a302d767800fd

Valide d51599dfcd3282049c7a91809bb83f665af23b69 (et 6f76b17079a709415195a7c27607cd52d039d7c )

104
Radu

Utilisez des minuscules.

  1. C'est plus facile à taper. (OMI)
  2. C'est plus facile à lire. (OMI)
  3. Les booléens JavaScript sont en minuscules et respectent la casse.
29
Bo Allen

Si vous avez l'intention d'utiliser JSON, alors RFC7159 dit:

Les noms littéraux DOIVENT être en minuscules. Aucun autre nom littéral n'est autorisé.

De la liste des changements incompatibles en arrière dans PHP 5.6 :

json_decode () rejette désormais les variantes non minuscules des littéraux JSON true, false et null à tout moment, conformément à la spécification JSON

Selon norme PSR-2 :

Les mots clés PHP DOIVENT être en minuscules.

Les constantes PHP true, false et null DOIVENT être en minuscules.

9
Mandrake

J'avais l'habitude de faire des booléens VRAI/FAUX de style C comme toutes les consts, dans toutes les majuscules, jusqu'à ce que j'arrive sur le PSR mouvement en marche.

Section 2.5 du PSR-2:

Les constantes PHP true, false et null DOIVENT être en minuscules.

Donc, fondamentalement, si vous voulez jouer à Nice avec des détails de style open source, les booléens doivent être en minuscules.

9
Todd

Peu importe, true est exactement la même chose que TRUE. Il en va de même pour false et null. Je n'ai pas entendu dire que cela aurait été important à aucun moment.

La seule façon de gâcher les choses est de citer ces valeurs, par exemple:

$foo = false;   // FALSE
$bar = "false"; // TRUE

$foo2 = true;   // TRUE
$bar2 = "true"; // TRUE

$foo3 = null;   // NULL
$bar3 = "null"; // TRUE

La seule chose qui vous restreint ou vous encourage à utiliser des majuscules ou des minuscules peut être votre entreprise ou vos propres directives de codage. En dehors de cela, vous êtes libre d'utiliser l'un ou l'autre et cela ne posera aucun problème.

5
Tatu Ulmanen

J'ai écrit un code simple pour vérifier les différences entre false et FALSE : Chaque itération faisait quelque chose qui:

    for ($i = 0; $i < self::ITERATIONS; ++$i) {
       (0 == FALSE) ;
    }

Voici les résultats:

Iterations: 100000000
using 'FALSE': 25.427761077881 sec
using 'false': 25.01614689827 sec

Nous pouvons donc voir que les performances sont très légèrement touchées par le cas booléen - les minuscules sont plus rapides. Mais vous ne verrez certainement pas.

5
Arkadij Kuzhel

Personnellement, j'ai toujours utilisé le formulaire en minuscules, mais pour aucune raison particulière autre que de faire en sorte que mon code soit bien rangé, le seul endroit où j'utilise des majuscules est lorsque les noms de classe et les noms de variables de boîtier de chameau.

Un avantage à utiliser des majuscules qui me vient à l'esprit est qu'ils ressortent et sont faciles à trouver dans le code.

4
RMcLeod

Je suis tombé sur cette vieille question en me posant la même chose. Bon point avec define ('TRUE', false); define ('FALSE', true); Ne s'applique cependant pas à php5. Écrire ces lignes dans un code php5, c'est comme écrire un commentaire.

2
Conrad

Voici mon TEST sur Windows 7x64bit Apache/2.4.9 PHP/5.5.14

$blockLimit = 50;
while($blockLimit > 0): $blockLimit--;

//STAR Here ================================================

$msc = microtime(true);
for ($i = 0; $i < 100000; $i++) {
   echo (FALSE);
}
echo 'FALSE took ' . number_format(microtime(true)-$msc,4) . " Seconds\r\n";
$msc = microtime(true);
for ($i = 0; $i < 100000; $i++) {
   echo (false);
}
echo 'false took ' . number_format(microtime(true)-$msc,4) . " Seconds\r\n";

echo "\r\n --- \r\n";
//Shutdown ==================================================
endwhile;

Cette fois, FALSE a gagné 20 fois. Les majuscules sont donc plus rapides dans mon environnement.

0
Abbas Uddin