Programing

PHP에서 대문자 부울 대 소문자

crosscheck 2020. 7. 11. 10:04
반응형

PHP에서 대문자 부울 대 소문자


내가 PHP를 배울 때, 나는 당신이 항상 논리 값의 대문자 버전을 사용해야 선가, TRUE그리고 FALSE"정상적인"소문자 버전 때문에, true그리고 false사용에 "안전"하지 않았다.

몇 년이 지났고 필자가 작성한 모든 PHP 스크립트는 대문자 버전을 사용합니다. 그러나 이제는 소문자 버전으로 작성된 많은 PHP (예 : Zend Framework)를 보았으므로 의문의 여지가 있습니다.

대문자 버전을 사용해야하는 이유가 있습니까? 아니면 소문자를 사용하는 것이 완벽합니까?

편집 :이 적용된다는 것을 언급하는 것을 잊었다 NULLnull뿐만 아니라.


공식 PHP 매뉴얼은 말합니다 :

부울 리터럴을 지정하려면 키워드 TRUE 또는 FALSE를 사용하십시오. 둘 다 대소 문자를 구분하지 않습니다.

그래 그래서, true === TRUE하고 false === FALSE.

그러나 개인적으로 나는 가독성 위해 TRUE반복 true해서 선호합니다 . 그것은 사용에 대한 내 취향에 대해 동일한 이유 를 통해 또는 , 및 사용에 이상 .FALSEfalseORor||ANDand&&

PSR-2 표준은 필요 true, falsenull소문자로.


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

행복한 디버깅! (PHP < 5.1.3 (2006 년 5 월 2 일) , 데모 참조 )

편집 : 대문자 bool은 상수이고 소문자는 값입니다. 상수가 아닌 값에 관심이 있으며 쉽게 변경할 수 있습니다.


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. 입력하기가 더 쉽습니다. (IMO)
  2. 읽기가 더 쉽습니다. (IMO)
  3. JavaScript 부울은 소문자와 대소 문자를 구분합니다.

나는 PSR 악 대차를 타기 전까지 모든 대문자로 C 스타일 TRUE / FALSE 부울을 모든 대문자로 사용했습니다 .

PSR-2 섹션 2.5 :

PHP 상수 true, false 및 null은 반드시 소문자 여야합니다.

따라서 기본적으로 오픈 소스 스타일 관련 사항을 잘 활용하려면 부울이 소문자 여야합니다.


JSON을 사용하려는 경우 RFC7159다음과 같이 말합니다.

리터럴 이름은 소문자 여야합니다. 다른 리터럴 이름은 허용되지 않습니다.

PHP 5.6 의 이전 버전과 호환되지 않는 변경 사항 목록에서 :

json_decode ()는 JSON 사양에 따라 소문자가 아닌 JSON 리터럴의 true, false 및 null을 항상 거부합니다.

PSR-2 표준 에 따르면 :

PHP 키워드는 반드시 소문자 여야합니다.

PHP 상수 true, false 및 null은 반드시 소문자 여야합니다.


중요하지 않습니다 . true와 정확히 동일합니다 TRUE. 동일은 간다 false하고 null. 나는 그것이 언제라도 문제가 될 것이라고 들었습니다.

물건을 엉망으로 만들 수있는 유일한 방법은 다음과 같은 값을 인용하는 것입니다.

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

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

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

대문자 또는 소문자 사용을 제한하거나 권장하는 것만이 회사 또는 자체 코딩 지침 일 수 있습니다. 그 외에는 어느 쪽이든 자유롭게 사용할 수 있으며 문제가 발생하지 않습니다.


I've written simple code to check the differences between false and FALSE: Each iteration was doing something that:

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

Here are the results:

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

So we can see that performance is very slightly touched by the booleans case - lowercase is faster. But certainly you won't see.


Personally I've always used the lowercase form, but for no particular reason other than to make my code look tidy, the only place I use capital letters is when camel casing class names and variable names.

One advantage to using uppercase that comes to mind though is that they stick out and are easy to find in code.


I came across this old question while asking myself the same thing. Good point with define('TRUE', false);define('FALSE', true); Doesn't apply to php5 though. Writing those lines in a php5 code is like writing a comment.


Here is my TEST on 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;

This time FALSE won 20 times. So uppercase is faster in my environment.

참고URL : https://stackoverflow.com/questions/2013848/uppercase-booleans-vs-lowercase-in-php

반응형