empty()
musi uzyskać dostęp do wartości przez referencję (w celu sprawdzenia, czy ta referencja wskazuje na coś, co istnieje), a PHP przed 5.5 nie obsługiwał referencji do wartości tymczasowych zwracanych z funkcji.
Jednak prawdziwym problemem jest to, że empty()
w ogóle go używasz , błędnie wierząc, że „pusta” wartość różni się od „fałszywej”.
Pusty to tylko alias !isset($thing) || !$thing
. Kiedy rzecz, którą sprawdzasz, zawsze istnieje (w PHP zawsze istnieją wyniki wywołań funkcji), empty()
funkcja jest tylko operatorem negacji .
PHP nie ma pojęcia pustki . Wartości, które mają wartość false, są puste, wartości, które mają wartość true, są niepuste. To jest to samo. Ten kod:
$x = something();
if (empty($x)) …
i to:
$x = something();
if (!$x) …
ma zawsze ten sam wynik we wszystkich przypadkach dla wszystkich typów danych (ponieważ $x
jest zdefiniowany empty()
jest nadmiarowy).
Zwracana wartość z metody zawsze istnieje (nawet jeśli nie masz return
instrukcji, zwracana wartość istnieje i zawiera null
). W związku z tym:
if (!empty($r->getError()))
jest logicznie równoważne z:
if ($r->getError())
empty
: wiki.php.net/rfc/empty_isset_exprs