PHP - isset() i !empty() vs if($var)

0

Witam!

Które podejście jest lepsze?:

if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))
{
     // ...
}

Czy:

if($_SERVER['HTTP_REFERER'])
{
     // ...
}

Z tego co wiem, oba kody mają dokładnie takie samo działanie. Jednak z tego co pamiętam, w każdych kodach które przeglądałem stosowane było zawsze podejście pierwsze.

Czy ma ono jakieś zalety, których nie ma to drugie? Czy może jest to obojętne i spokojnie można stosować to drugie?

0

Pusty string daje false.

0

w pierwszym wypadku wystarczy samo

if(!empty($_SERVER['HTTP_REFERER']))

bo

empty($foo)

znaczy tyle co:

!isset($foo) || $foo == false

czyli masz tam właściwie redundancyjny warunek:

if(isset($_SERVER['HTTP_REFERER']) && isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != false)

a

$foo == false

to to samo co:

!$foo

czyli w drugim przypadku faktycznie masz to samo, tylko bez sprawdzenia czy zmienna w ogóle istnieje, przez co może zostać wytworzony notice

// pomyłka z tym zerem, empty przecież też zwróci true

1 użytkowników online, w tym zalogowanych: 0, gości: 1