Booleans em maiúsculas vs. minúsculas em php
-
19-09-2019 - |
Pergunta
Quando eu estava aprendendo PHP, li em algum lugar que você sempre deve usar as versões da caixa dos booleanos, TRUE
e FALSE
, porque as versões minúsculas "normais", true
e false
, não era "seguro" de usar.
Já se passaram muitos anos, e todo script PHP que escrevi usa a versão em maiúsculas. Agora, porém, estou questionando que, como já vi bastante PHP escrito com a versão em minúsculas (por exemplo, Zend Framework).
Existe/já houve um motivo para usar a versão em maiúsculas ou está perfeitamente ok usar o minúsculo?
editar: esqueci de mencionar que isso se aplica a NULL
e null
também.
Solução
o Manual oficial do PHP diz:
Para especificar um literal booleano, use as palavras -chave verdadeiras ou falsas. Ambos são insensíveis ao caso.
Então sim, true === TRUE
e false === FALSE
.
Pessoalmente, no entanto, eu prefiro TRUE
sobre true
e FALSE
sobre false
por razões de legibilidade. É a mesma razão para minha preferência usar OR
sobre or
ou ||
, e ao usar AND
sobre and
ou &&
.
o PSR-2 padrão requer true
, false
e null
estar em minúsculas.
Outras dicas
define('TRUE', false);
define('FALSE', true);
Feliz depuração! (Php 5.1.3 (2 de maio de 2006), Vejo Demonstração)
Editar: BOOLS maiúsculas são constantes e mais baixas são valores. Você está interessado no valor, não na constante, que pode mudar facilmente.
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
COMITES D51599DFCD3282049C7A91809BB83F665AF23B69 (e 6F76B17079A709415195A7C27607CD52D039D7C3)
Use minúsculas.
- É mais fácil digitar. (IMO)
- É mais fácil de ler. (IMO)
- Os booleanos JavaScript são minúsculos e sensíveis à caixa.
Eu costumava fazer o estilo c verdadeiro/falso booleanos como todas as constidas, em todas as tampas, até que eu entrei no Psr onda.
Seção 2.5 do PSR-2:
As constantes de PHP verdadeiras, falsas e nulas devem estar em minúsculas.
Então, basicamente, se você quiser jogar bem com os detalhes do estilo de código aberto, os booleanos precisam ser minúsculos.
Se você pretende usar o JSON, então RFC7159 diz:
Os nomes literais devem ser minúsculos. Nenhum outro nomes literais é permitido.
Da lista de mudanças incompatíveis para trás em Php 5.6:
JSON_DECODE () agora rejeita variantes que não são de lowercase do JSON Literais verdadeiras, falsas e nulas o tempo todo, conforme a especificação JSON
De acordo com Padrão PSR-2:
As palavras -chave PHP devem estar em minúsculas.
As constantes de PHP verdadeiras, falsas e nulas devem estar em minúsculas.
Não importa, true
é exatamente o mesmo que TRUE
. O mesmo vale para false
e null
. Não ouvi dizer que isso teria importância em qualquer momento.
A única maneira de atrapalhar as coisas é citando esses valores, por exemplo:
$foo = false; // FALSE
$bar = "false"; // TRUE
$foo2 = true; // TRUE
$bar2 = "true"; // TRUE
$foo3 = null; // NULL
$bar3 = "null"; // TRUE
A única coisa que restringe ou incentivando você a usar superior ou minúscula pode ser a sua empresa ou suas próprias diretrizes de codificação. Fora isso, você é livre para usar qualquer um e isso não liderará em nenhum problema.
Eu escrevi código simples para verificar as diferenças entre falso e FALSO: Cada iteração estava fazendo algo que:
for ($i = 0; $i < self::ITERATIONS; ++$i) {
(0 == FALSE) ;
}
Aqui estão os resultados:
Iterations: 100000000
using 'FALSE': 25.427761077881 sec
using 'false': 25.01614689827 sec
Portanto, podemos ver que o desempenho é um pouco tocado pelo estojo booleans - o minúsculo é mais rápido. Mas certamente você não verá.
Pessoalmente, sempre usei o formulário minúsculo, mas por nenhuma razão específica que não seja para fazer meu código parecer arrumado, o único local em que uso letras maiúsculas é quando os nomes das classes de casos de camelo e nomes de variáveis.
Uma vantagem de usar maiúsculas que vem à mente é que elas se destacam e são fáceis de encontrar no código.
Eu me deparei com essa antiga pergunta enquanto me perguntava a mesma coisa. Bom ponto com define ('verdadeiro', false); define ('false', verdadeiro); Não se aplica ao PHP5. Escrever essas linhas em um código PHP5 é como escrever um comentário.
Aqui está o meu teste no 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;
Desta vez, False venceu 20 vezes. Portanto, a maçaneta é mais rápida no meu ambiente.