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

Когда я изучал PHP, я где-то читал, что вы всегда должны использовать версии с буфером в верхнем регистре, TRUE и FALSE , потому что «обычные» строчные версии, true и false не были «безопасными» для использования.

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

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

Заметим, что это относится к NULL и null .

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

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

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

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

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

 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 

Записывает d51599dfcd3282049c7a91809bb83f665af23b69 (и 6f76b17079a709415195a7c27607cd52d039d7c3 )

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

  1. Его легче набирать. (ИМО)
  2. Его легче читать. (ИМО)
  3. Булевы JavaScript строчные и регистрозависимые.

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

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

И из Php 5.6 :

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

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

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

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

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

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

Раздел 2.5 PSR-2:

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

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

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

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

 $foo = false; // FALSE $bar = "false"; // TRUE $foo2 = true; // TRUE $bar2 = "true"; // TRUE $foo3 = null; // NULL $bar3 = "null"; // TRUE 

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

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

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

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

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

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

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

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

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

Вот мой ТЕСТ на 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 раз. Таким образом, верхний регистр быстрее в моей среде.