Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sprawdzanie IF
Forum PHP.pl > Forum > Przedszkole
!*!
Ostatnio w niektórych skryptach php widzę zjawisko 'odwrócenia' przy sprawdzaniu w IF:

  1. if ( 'POST' != $_SERVER['REQUEST_METHOD'] )


  1. if ( false == $_SERVER['REQUEST_METHOD'] )


zamiast

  1. if ($_SERVER['REQUEST_METHOD'] !='POST' )

  1. if ($_SERVER['REQUEST_METHOD'] == false )


Czy to ma jakieś znaczenie w wydajności, dlaczego jest taki zapis?
Fifi209
Każdy pisze jak mu wygodnie. smile.gif Co do wydajności musiałbyś sprawdzić ale wątpię, w każdym razie na php benchmark nie ma.
!*!
yhym, myślałem że to jest tak jak z pisaniem w pętli "++$i" zamiast "$i++" coś w tym stylu.
by_ikar
Mogę być w błędzie, ale gdzieś czytałem, nawet już nie pamiętam gdzie, że operacje logiczne (suma, różnica, iloczyn, iloraz itp) są wykonywane od prawej strony. Nie wiem czy tak jest na prawdę, może nawet to błędnie zapamiętałem, no ale coś takiego mi świta.
nospor
W działaniu różnicy nie ma. Chodzi o zwykłe bezpieczeństwo przed ludzką głupotą. Przykład

if ($zm == null)
teraz jakich bystrzacha sie jąrbnał i zrobił
if ($zm = null)
I po IF $zm ma wartość null

Teraz na odwrót
if (null == $zm)
I znowu się mylimy:
if (null = $zm)
Tu znowu mamy przypisanie, ale $zm po IF będzie miałą swoją wartość a nie jak poprzednio wartość null


thek
Fifi... Nie sprawdzałem nigdy, ale może chodzić o kolejność dynamicznej konwersji. W porównaniu bowiem coś zawsze jako pierwsze będzie musiało być konwertowane do zgodnego typu. Jeśli lewa strona na początku jest domyślna, to prawa strona porównania będzie castowana do typu własciwego dla lewej strony. W takim wypadku "odwrócony" if dla przykładu z pierwszego posta będzie raz konwertował $_SERVER['REQUEST_METHOD'] do stringa by porównać do POST, a za drugim razem do bool by sprawdzić z false.

"Typowa" kolejność wymuszała by 'POST' było stringiem, ale już false było by konwertowane zapewne do pustego stringa lub 'false' zależnie od tego co by mogło być w tym elemencie tablicy SERVER smile.gif Tak więc skłaniałbym się do tego, że w ten sposób jest wymuszane rzutowanie określonej strony porównania do własciwego typu zanim samo porównanie nastąpi. Choć wyjasnienie nospora też jest sensowne.
Fifi209
zThek, jego wyjaśnienie jest bardziej sensowne bo nie ogranicza się tylko do PHP, w kompilowanych językach też można tak zrobić, a dynamiczne typy to zło!! Za bardzo się przyzwyczaiłem do C++ i C# i teraz mi to strasznie w PHP przeszkadza, tak jak kiedyś mi się podobało.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.