Верхний регистр Booleans против нижнего регистра в PHP

Когда я изучал PHP, я где-то читал, что вы всегда должны использовать версии с буфером в верхнем регистре, TRUE и FALSE, потому что "обычные" версии с нижним регистром, TRUE и FALSE, weren ' t "безопасно" для использования.

Сейчас уже много лет, и каждый PHP script, который я написал, использует версию в верхнем регистре. Теперь, однако, я задаюсь этим вопросом, поскольку я видел много PHP, написанных с нижней строкой (т.е. Zend Framework).

Is/Была ли когда-либо причина использования версии в верхнем регистре, или нормально ли использовать нижний регистр?

edit: Забыл упомянуть, что это относится и к NULL и NULL.

Ответ 1

Официальное руководство PHP говорит:

Чтобы указать логический литерал, используйте ключевые слова TRUE или FALSE. Оба не чувствителен к регистру.

Итак, да, true === TRUE и false === FALSE.

Лично, однако, я предпочитаю TRUE более TRUE и FALSE по FALSE для удобства чтения. Это та же причина для моего предпочтения в использовании OR над OR или || и при использовании AND над AND или &&.

Стандарт PSR-2 требует, чтобы TRUE, FALSE и null были в нижнем регистре.

Ответ 2

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

Счастливая отладка! (PHP < 5.1.3 (2 мая 2006 г.), см. Демо)

Изменить: Верхние регистры - это константы, а нижние - значения. Вас интересует значение, а не константа, которая может легко измениться.


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

Задает d51599dfcd3282049c7a91809bb83f665af23b696f76b17079a709415195a7c27607cd52d039d7c3)

Ответ 3

Используйте строчные буквы.

  • Легче печатать. (ИМО)
  • Легче читать. (ИМО)
  • Булевы JavaScript имеют строчные и регистрозависимые символы.

Ответ 4

Если вы собираетесь использовать JSON, тогда в стандарте RFC7159 говорится:

Литеральные имена ДОЛЖНЫ быть строчными. Других буквенных имен не допускается.

И из Php 5.6:

json_decode() теперь отвергает варианты строчных букв JSON, отличных от нижнего регистра, true, false и null в любое время, согласно спецификации JSON

И согласно PSR-2 стандарт:

PHP-слова ДОЛЖНЫ быть в нижнем регистре.

Константы PHP true, false и null ДОЛЖНЫ быть в нижнем регистре.

Ps.: Я не мог опубликовать ссылку на RFC7159 из-за ограничений SO.

Ответ 5

Раньше я использовал стиль C TRUE/FALSE booleans, как и все константы, во всех кепках, пока не попал на PSR.

Раздел 2.5 PSR-2:

Константы PHP true, false и null ДОЛЖНЫ быть в нижнем регистре.

Итак, в принципе, если вы хотите хорошо играть с деталями стиля с открытым исходным кодом, Booleans должен быть строчным.

Ответ 6

Не имеет значения, true точно такой же, как true. То же самое касается false и null. Я не слышал, чтобы это имело значение в любой момент.

Единственный способ, которым вы можете повредить вещи, - это указать эти значения, например:

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

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

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

Единственное, что ограничивает или побуждает вас использовать верхний или нижний регистр, может быть вашей компанией или вашими собственными правилами кодирования. Помимо этого, вы можете использовать любой из них, и это не приведет к каким-либо проблемам.

Ответ 7

Я написал простой код, чтобы проверить различия между false и FALSE: Каждая итерация делала что-то, что:

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

Вот результаты:

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

Таким образом, мы можем видеть, что производительность очень немного затронута логическим регистром - строчный регистр быстрее. Но, конечно, вы не увидите.

Ответ 8

Лично я всегда использовал строчную форму, но без какой-либо конкретной причины, кроме как заставить мой код выглядеть аккуратно, единственное место, где я использую заглавные буквы, - это имена классов верблюдов и имена переменных.

Одно из преимуществ использования прописных букв, которые приходит на ум, состоит в том, что они торчат и их легко найти в коде.

Ответ 9

Я столкнулся с этим старым вопросом, задавая себе одно и то же. Хорошая точка с define ('TRUE', false); define ('FALSE', true); Однако не относится к php5. Написание этих строк в коде php5 напоминает запись комментария.

Ответ 10

Вот мой ТЕСТ на 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;

На этот раз FALSE выиграл 20 раз. Таким образом, верхний регистр быстрее в моей среде.