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.

Foi útil?

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.

  1. É mais fácil digitar. (IMO)
  2. É mais fácil de ler. (IMO)
  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top