strtolower - tipos de variables en php
Booleanos en mayúsculas vs. minúsculas en PHP (10)
Cuando estaba aprendiendo PHP, leí en alguna parte que siempre debería usar las versiones en mayúscula de los booleanos, TRUE
y FALSE
, porque las versiones "normales" en minúsculas, true
y false
, no eran "seguras" de usar.
Han pasado muchos años y cada script PHP que he escrito usa la versión en mayúsculas. Ahora, sin embargo, estoy cuestionando eso, ya que he visto un montón de PHP escrito con la versión en minúsculas (es decir, Zend Framework).
¿Alguna vez hubo alguna razón para usar la versión en mayúscula o está perfectamente bien usar la letra minúscula?
editar: Olvidé mencionar que esto se aplica a NULL
y null
también.
Aquí está mi PRUEBA en 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;
Esta vez FALSO ganó 20 veces. Entonces mayúsculas es más rápido en mi entorno.
El manual oficial de PHP dice:
Para especificar un literal booleano, use las palabras clave TRUE o FALSE. Ambos son sensibles a mayúsculas y minúsculas.
Así que sí, es true === TRUE
y false === FALSE
.
Personalmente, sin embargo, prefiero TRUE
sobre true
y FALSE
sobre false
por razones de legibilidad. Es la misma razón por la que prefiero usar OR
sobre or
o ||
, y en el uso de AND
sobre and
o &&
.
El estándar PSR-2 requiere true
, false
y null
en minúsculas.
He escrito un código simple para verificar las diferencias entre falso y FALSO : cada iteración estaba haciendo algo que:
for ($i = 0; $i < self::ITERATIONS; ++$i) {
(0 == FALSE) ;
}
Aquí están los resultados:
Iterations: 100000000
using ''FALSE'': 25.427761077881 sec
using ''false'': 25.01614689827 sec
Así que podemos ver que el rendimiento es tocado muy levemente por el caso de booleanos: la minúscula es más rápida. Pero ciertamente no verás.
Me encontré con esta vieja pregunta mientras me preguntaba lo mismo. Buen punto con define (''TRUE'', false); define (''FALSE'', true); No se aplica a php5 sin embargo. Escribir esas líneas en un código php5 es como escribir un comentario.
No importa, la true
es exactamente lo mismo que TRUE
. Lo mismo vale para false
y null
. No he escuchado que hubiera importado en ningún momento.
La única manera de complicar las cosas es citando esos valores, por ejemplo:
$foo = false; // FALSE
$bar = "false"; // TRUE
$foo2 = true; // TRUE
$bar2 = "true"; // TRUE
$foo3 = null; // NULL
$bar3 = "null"; // TRUE
Lo único que puede restringirlo o alentarlo a usar mayúsculas o minúsculas puede ser la guía de codificación de su empresa o la suya. Aparte de eso, puede usar cualquiera de los dos y no generará ningún problema.
Personalmente, siempre he usado la forma en minúscula, pero sin ninguna razón en particular que no sea para hacer que mi código se vea ordenado, el único lugar donde uso letras mayúsculas es cuando los nombres de las clases y los nombres de las variables de la carcasa de camello.
Sin embargo, una ventaja del uso de mayúsculas que viene a la mente es que sobresalen y son fáciles de encontrar en el código.
Si tiene intención de usar JSON, entonces RFC7159 dice:
Los nombres literales DEBEN estar en minúscula. No se permiten otros nombres literales.
De la lista de cambios incompatibles hacia atrás en PHP 5.6 :
json_decode () ahora rechaza las variantes no minúsculas de los literales JSON verdadero, falso y nulo en todo momento, según la especificación JSON
De acuerdo con el PSR-2 :
Las palabras clave de PHP DEBEN estar en minúsculas.
Las constantes de PHP verdadero, falso y nulo DEBEN estar en minúsculas.
Solía hacer booleanos VERDADEROS / FALSOS de estilo C como todos los concentos, en mayúsculas, hasta que subí al PSR-2 del PSR-2 .
Sección 2.5 de PSR-2:
Las constantes de PHP verdadero, falso y nulo DEBEN estar en minúsculas.
Así que, básicamente, si quieres jugar bien con los detalles de estilo de código abierto, los booleanos tienen que ser minúsculas.
Usa minúsculas
- Es más fácil escribir. (IMO)
- Es más fácil de leer (IMO)
- Los booleanos de JavaScript son minúsculos y distinguen entre mayúsculas y minúsculas.
define(''TRUE'', false);
define(''FALSE'', true);
Feliz depuración! (PHP < 5.1.3 (2 de mayo de 2006) , ver Demo )
Editar: los bools en mayúsculas son constantes y las minúsculas son valores. Usted está interesado en el valor, no en la constante, que puede cambiar fácilmente.
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
d51599dfcd3282049c7a91809bb83f665af23b69 (y 6f76b17079a709415195a7c27607cd52d039d7c3 )