Прописные логические и строчные буквы в PHP

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

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

Есть ли /была причина использовать прописную версию, или вполне нормально использовать строчную?

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

113 голосов | спросил Austin Hyde 6 Jpm1000000pmWed, 06 Jan 2010 18:11:12 +030010 2010, 18:11:12

9 ответов


0

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

  

Чтобы указать логический литерал, используйте   ключевые слова ИСТИНА или ЛОЖЬ. Оба   не чувствителен к регистру.

Так что да, true === TRUE и false === FALSE.

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

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

ответил Lukman 6 Jpm1000000pmWed, 06 Jan 2010 18:21:05 +030010 2010, 18:21:05
0
define('TRUE', false);
define('FALSE', true);

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

Редактировать . Заглавные буквы - это константы, а строчные - значения. Вы заинтересованы в значении, а не в константе, которая может легко измениться.


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
     

Фиксирует d51599dfcd3282049c7a691 (695) b6 (695) 69 a href = "http://git.php.net/?p=php-src.git;a=commit;h=6f76b17079a709415195a7c27607cd52d039d7c3" rel = "noreferrer"> 6f76b17079a709415195a7c27607d7

pd> p0> pd> pd

ответил Radu 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 27 Sep 2010 23:35:37 +0400 2010, 23:35:37
0

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

  1. Проще набрать. (ИМО) литий>
  2. Это легче читать. (ИМО) литий>
  3. JavaScript-логические значения строчные и чувствительны к регистру.
ответил Bo Allen 10 J0000006Europe/Moscow 2010, 21:00:41
0

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

Раздел 2.5 PSR-2:

  

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

В общем, если вы хотите хорошо играть с деталями стиля с открытым исходным кодом, логические значения должны быть в нижнем регистре.

ответил Todd 3 J000000Friday15 2015, 04:11:28
0

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

  

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

Из списка назад несовместимых изменений в PHP 5.6 :

  

json_decode () теперь отклоняет нестрочные варианты литералов JSON true, false и null всегда, согласно спецификации JSON

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

  

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

     

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

ответил Mandrake 26 Jpm1000000pmMon, 26 Jan 2015 18:50:22 +030015 2015, 18:50:22
0

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

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

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

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

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

ответил Arkadij Kuzhel 12 MarpmTue, 12 Mar 2013 15:31:19 +04002013-03-12T15:31:19+04:0003 2013, 15:31:19
0

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

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

ответил RMcLeod 6 Jpm1000000pmWed, 06 Jan 2010 18:21:34 +030010 2010, 18:21:34
0

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

ответил Conrad 17 Jam1000000amTue, 17 Jan 2012 09:43:33 +040012 2012, 09:43:33
0

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

ответил Abbas Uddin 14 J000000Monday14 2014, 03:55:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132