Booleanos en mayúsculas frente a minúsculas en PHP

9 minutos de lectura

avatar de usuario
austin hyde

Cuando estaba aprendiendo PHP, leí en alguna parte que siempre deberías usar las versiones en mayúsculas de los booleanos, TRUE y FALSEporque las versiones en minúsculas “normales”, true y falseno eran “seguros” de usar.

Han pasado muchos años y cada script PHP que he escrito usa la versión en mayúsculas. Ahora, sin embargo, lo cuestiono, ya que he visto muchos PHP escritos con la versión en minúsculas (es decir, Zend Framework).

¿Hay/Hubo alguna vez una razón para usar la versión en mayúsculas, o está perfectamente bien usar minúsculas?

editar: Olvidé mencionar que esto se aplica a NULL y null también.

  • Hay varios sitios que dicen que escribirlo en minúsculas supuestamente es “mucho más rápido”, pero sin citar fuentes serias. Interesado en ver si surge algo.

    – Peka

    6 de enero de 2010 a las 15:14

  • Eso no es cierto. Lo probé con 5 millones de iteraciones y ambos dieron los mismos resultados, 0,5 s en mi PC: P

    – Alex

    29 de mayo de 2012 a las 2:22

  • @Alex Pekka también puede significar que el verdadero escritura de booleanos en minúsculas es más rápido. Eso tiene sentido, tener que usar menos teclas. Sin embargo, la diferencia es pequeña.

    – Marti Laine

    8 de noviembre de 2012 a las 16:51

  • Lo siento, accidentalmente voté en contra después de haber votado a favor por ti.

    – SIFE

    20 de junio de 2013 a las 10:37

  • Una observación interesante: var_export() escribe verdadero y falso en minúsculas, pero NULL en mayúsculas. Precioso, ¿eh? 3v4l.org/6Oelk

    – Don Quixote

    26 de diciembre de 2015 a las 0:33

avatar de usuario
Radu

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

¡Feliz depuración! (PHP < 5.1.3 (2 de mayo de 2006)ver Manifestación)

Editar: Los bools en mayúsculas son constantes y las minúsculas son valores. Estás 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

confirma d51599dfcd3282049c7a91809bb83f665af23b69 (y 6f76b17079a709415195a7c27607cd52d039d7c3)

  • -1 porque A) esto no tiene sentido. B) esto no responde a la pregunta. y C) Ya acepté la respuesta correcta, y esto no presenta ningún adicional útil información.

    – Austin Hyde

    27 de septiembre de 2010 a las 22:47

  • Entonces déjame explicarte en detalle: los bools en mayúsculas son constantes y las minúsculas son valores. Estás interesado en el valor, no en la constante, que puede cambiar fácilmente. Entonces, si hubieras pensado un poco en el texto y no te hubieras apresurado a dar un penalti, probablemente lo habrías entendido.

    – Radu

    28 de septiembre de 2010 a las 6:00


  • Entiendo el punto que está haciendo (ahora), pero la forma en que lo hizo originalmente fue (en mi opinión) críptica y sin sentido. Si originalmente hubieras editado la respuesta, habría votado a favor, ya que este es un muy buen punto, en realidad.

    – Austin Hyde

    28 de septiembre de 2010 a las 22:36

  • Esta es la respuesta correcta. Debería haber obtenido los puntos por esto.

    – gusano serial

    23 de junio de 2011 a las 19:49

  • En cuanto a la edición, esa descripción es un poco engañosa… Los valores reales en sí mismos (que se compilan en tokens T_NULL, T_TRUEy T_FALSE en el momento del análisis), no distinguen entre mayúsculas y minúsculas, por lo que usar NULL no es en realidad una “constante” — a no ser quehacer es una constante, usando define(). simplemente usando NULL o TRUE no significa que sea una constante, ya que si no existe tal constante, PHP la interpreta como el literal. Una descripción más precisa es que las versiones en minúsculas no poder ser redefinido, mientras que cualquier otra variación de caso pueden.

    – José

    31 de diciembre de 2012 a las 17:38

avatar de usuario
lukman

los manual oficial de php dice:

Para especificar un literal booleano, use las palabras clave VERDADERO o FALSO. Ambos son insensibles a mayúsculas y minúsculas.

Así que sí, 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 sobre el uso AND sobre and o &&.

los PSR-2 estándar requiere true, false y null estar en minúsculas.

  • Solo quiero señalar que OR y || son diferentes operadores en PHP (ya que tienen diferente precedencia), al igual que AND y &&. (Así por ejemplo && y || tienen mayor precedencia que los operadores de asignación, pero OR y AND no son.)

    – Juan

    10 de junio de 2010 a las 17:25


  • Además, con los IDE de hoy en día, no veo la razón para tener booleanos en mayúsculas puros, ya que el Resaltador de sintaxis para la mayoría de los IDE los separa con gran distinción.

    – RobertPitt

    28 de septiembre de 2010 a las 9:51

  • Prefiero escribirlos en minúsculas para no tener que mantener presionada la tecla Mayús.

    – ack

    7 abr 2012 a las 21:12

  • También me gustan las minúsculas, como en Java, pero para cada uno. Sin embargo, desearía que se conformaran con UNA forma y que simplemente nos hicieran cambiar a todos de una forma u otra. ¡Esta no es una flexibilidad que realmente necesito tener!

    – rayo

    24/10/2012 a las 15:42

  • @Cyril: hay muchas buenas razones para permitirse odiar PHP (por ejemplo, solo vea lo que Johrn mencionó anteriormente, no sabía eso), pero dado que básicamente no distingue entre mayúsculas y minúsculas, no hay nada extraño en mayúsculas y minúsculas las expresiones son iguales. Qué es Sin embargo, no tiene sentido que mezcle la sensibilidad entre mayúsculas y minúsculas y la insensibilidad entre mayúsculas y minúsculas con la insensibilidad general. (Ver, por ejemplo: stackoverflow.com/questions/5643496/…)

    – Talla

    19 de junio de 2013 a las 10:29

avatar de usuario
bo allen

Usa minúsculas.

  1. Es más fácil escribir. (OMI)
  2. Es más fácil de leer. (OMI)
  3. Los valores booleanos de JavaScript son minúsculas y distinguen entre mayúsculas y minúsculas.

  • +1; Estaba a punto de agregar el argumento de Javascript: como es MUY común en la programación web escribir código PHP y JS, los músculos de los dedos de desarrollo web bien desarrollados continúan aplicando de forma rutinaria el mismo caso de letra utilizado en el último contexto de idioma. Al menos, a menudo me encontré escribiendo VERDADERO o FALSO en Javascript después de cambiar de PHP. El uso de minúsculas en PHP solucionó esto para siempre.

    – Talla

    19 de junio de 2013 a las 10:45


Solía ​​hacer booleanos de estilo C VERDADERO/FALSO como todas las constantes, en mayúsculas, hasta que llegué al PSR carro.

Sección 2.5 de PSR-2:

Las constantes de PHP verdadero, falso y nulo DEBEN estar en minúsculas.

Básicamente, si quieres jugar bien con detalles de estilo de código abierto, los valores booleanos deben estar en minúsculas.

  • Correcto, pero esta pregunta se refería específicamente a los booleanos en mayúsculas/minúsculas en PHP, no JSON. Por ejemplo, ambos json_encode(TRUE) y json_encode(true) rendir 'true'.

    – Austin Hyde

    26 de enero de 2015 a las 20:21

  • Perdón por mencionar JSON, ¿sería mejor si elimino todas esas referencias y solo menciono PSR-2?

    – Mandrágora

    27 de enero de 2015 a las 19:54

  • Creo que la referencia a JSON es apropiada, ya que con frecuencia usa javascript/JSON con PHP y puede estar buscando consistencia.

    –Doug Kress

    22 de agosto de 2015 a las 19:15

No importa, true es exactamente igual que TRUE. Lo mismo ocurre con false y null. No he oído que hubiera importado en ningún momento.

La única forma de estropear 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 lo restringe o lo alienta a usar mayúsculas o minúsculas pueden ser las pautas de codificación de su empresa o las suyas propias. Aparte de eso, puede usar cualquiera de los dos y no generará ningún problema.

  • FALSO y NULL no son lo mismo. is_null() no devuelve verdadero si el valor === FALSO.

    – Noah Goodrich

    23 de noviembre de 2010 a las 21:28

  • @Noah Goodrich, en ningún momento insinué que false y null seria lo mismo Dije que “lo mismo vale para false y null“, lo que significaba que ambos se pueden expresar en letras minúsculas o mayúsculas.

    – Tatu Ulmanen

    24 de noviembre de 2010 a las 10:09

avatar de usuario
Arkadij Kuzhel

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

Entonces, podemos ver que el rendimiento se ve ligeramente afectado por el caso booleano: las minúsculas son más rápidas. Pero seguro que no lo verás.

  • FALSO y NULL no son lo mismo. is_null() no devuelve verdadero si el valor === FALSO.

    – Noah Goodrich

    23 de noviembre de 2010 a las 21:28

  • @Noah Goodrich, en ningún momento insinué que false y null seria lo mismo Dije que “lo mismo vale para false y null“, lo que significaba que ambos se pueden expresar en letras minúsculas o mayúsculas.

    – Tatu Ulmanen

    24 de noviembre de 2010 a las 10:09

avatar de usuario
RMcLeod

Personalmente, siempre he usado la forma en minúsculas, pero sin ninguna razón en particular que no sea hacer que mi código se vea ordenado, el único lugar en el que uso letras mayúsculas es cuando se escriben nombres de clases y nombres de variables.

Sin embargo, una ventaja de usar mayúsculas que me viene a la mente es que sobresalen y son fáciles de encontrar en el código.

  • +1 por orden. Toda la tradición de mayúsculas proviene de C, pero ya es hora de que nos deshagamos de esa forma fea.

    – Petruza

    30 de agosto de 2012 a las 18:10

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad