Kiedy uczyłem się PHP, przeczytałem gdzieś, że zawsze powinieneś używać wersji logicznych z dużymi literami TRUE
i FALSE
, ponieważ "normalne" wersje pisane małymi literami true
i false
nie były "bezpieczne" w użyciu.
Minęło już wiele lat i każdy napisany przeze mnie skrypt PHP używa wersji pisanej wielkimi literami. Teraz jednak kwestionuję to, ponieważ widziałem wiele PHP napisanych małymi literami (tj. Zend Framework).
Czy / czy istniał kiedykolwiek powód, aby używać wersji z dużymi literami, czy też jest całkowicie OK, aby używać małych liter?
EDIT: Zapomniałem wspomnieć, że dotyczy to NULL
i null
tak dobrze.
php
language-history
Austin Hyde
źródło
źródło
Odpowiedzi:
Oficjalny podręcznik PHP mówi:
Więc tak,
true === TRUE
ifalse === FALSE
.Osobiście jednak wolę
TRUE
nadtrue
iFALSE
nadfalse
względów czytelności. To ten sam powód, dla którego preferuję używanieOR
overor
or||
iAND
overand
or&&
.PSR-2 standard wymaga
true
,false
inull
być pisane małymi literami.źródło
OR
i||
są to różne operatory w PHP (ponieważ mają różne pierwszeństwo), podobnie jakAND
i&&
. (Na przykład&&
i||
mają wyższy priorytet niż operatory przypisania, aleOR
iAND
nie są).define('TRUE', false); define('FALSE', true);
Miłego debugowania! (PHP < 5.1.3 (2 maja 2006) , zobacz Demo )
Edycja: wielkie litery to stałe, a małe litery to wartości. Interesuje Cię wartość, a nie stała, która może się łatwo zmienić.
źródło
T_NULL
,T_TRUE
iT_FALSE
na parse czasu), są wielkości liter, więc użycieNULL
nie jest rzeczywiście „stałą” --- chyba że uczynisz to stałą, używającdefine()
. Po prostu użycieNULL
lubTRUE
nie oznacza, że jest to stała, tak jakby nie było takiej stałej, PHP interpretuje ją jako literał. Bardziej dokładny opis jest, że wersje te małe nie może być na nowo, natomiast wszelkich innych zmian przypadek puszki .Użyj małych liter.
źródło
Jeśli zamierzasz używać JSON, to RFC7159 mówi:
Z listy niekompatybilnych wstecz zmian w PHP 5.6 :
Zgodnie ze standardem PSR-2 :
źródło
json_encode(TRUE)
ijson_encode(true)
wydajność'true'
.Kiedyś wykonywałem wartości logiczne TRUE / FALSE w stylu C, takie jak wszystkie const, we wszystkich kapslach, dopóki nie dostałem się na modę PSR .
Sekcja 2.5 PSR-2:
Zasadniczo, jeśli chcesz dobrze bawić się szczegółami stylu open source, Booleans musi być małymi literami.
źródło
To nie ma znaczenia,
true
jest dokładnie takie samo jakTRUE
. To samo dotyczyfalse
inull
. Nie słyszałem, żeby to miało jakiekolwiek znaczenie.Jedynym sposobem na zepsucie jest cytowanie tych wartości, na przykład:
$foo = false; // FALSE $bar = "false"; // TRUE $foo2 = true; // TRUE $bar2 = "true"; // TRUE $foo3 = null; // NULL $bar3 = "null"; // TRUE
Jedyną rzeczą ograniczającą lub zachęcającą do używania wielkich lub małych liter mogą być wytyczne firmy lub własne wytyczne dotyczące kodowania. Poza tym możesz używać jednego z nich i nie spowoduje to żadnych problemów.
źródło
false
inull
będzie tak samo. Powiedziałem, że „to samo dotyczyfalse
inull
”, co oznaczało, że oba można wyrazić małymi lub dużymi literami.Napisałem prosty kod, aby sprawdzić różnice między fałszem a FAŁSZEM : Każda iteracja powodowała:
for ($i = 0; $i < self::ITERATIONS; ++$i) { (0 == FALSE) ; }
Oto wyniki:
Iterations: 100000000 using 'FALSE': 25.427761077881 sec using 'false': 25.01614689827 sec
Widzimy więc, że wielkość liter logicznych bardzo nieznacznie wpływa na wydajność - małe litery są szybsze. Ale na pewno nie zobaczysz.
źródło
Osobiście zawsze używałem małych liter, ale bez szczególnego powodu, poza tym, aby mój kod wyglądał schludnie, jedynym miejscem, w którym używam wielkich liter, są nazwy klas i nazwy zmiennych wielbłądów.
Jedną z zalet używania wielkich liter, która przychodzi na myśl, jest to, że odstają i są łatwe do znalezienia w kodzie.
źródło
Natknąłem się na to stare pytanie, zadając sobie to samo. Słuszna uwaga z definicją („TRUE”, false); define („FALSE”, true); Nie dotyczy to jednak php5. Pisanie tych linii w kodzie php5 jest jak pisanie komentarza.
źródło
Oto mój TEST na 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;
Tym razem FALSE wygrał 20 razy. Więc wielkie litery są szybsze w moim środowisku.
źródło
Spóźniłem się na imprezę od lat, ale chciałem wspomnieć o czymś interesującym, o czym jeszcze nie ma w wątku. Dziś odkryłem, że
True
jest również ważny, a nie tylkotrue
lubTRUE
. Wszystkie pisownie są równoważne. Jest to istotne z powodu generatora Open API dla PHP, którego używaTrue
. (Co doprowadziło mnie do oszołomienia i poszukiwań, które znalazły tę stronę).źródło