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ż $xjest zdefiniowany empty()jest nadmiarowy).
Zwracana wartość z metody zawsze istnieje (nawet jeśli nie masz returninstrukcji, 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