empty()
muss auf den Wert als Referenz zugreifen (um zu überprüfen, ob diese Referenz auf etwas verweist, das vorhanden ist), und PHP vor 5.5 unterstützte keine Verweise auf temporäre Werte, die von Funktionen zurückgegeben wurden.
Das eigentliche Problem, das Sie haben, ist jedoch, dass Sie es empty()
überhaupt verwenden und fälschlicherweise glauben, dass sich der "leere" Wert von "falsch" unterscheidet.
Leer ist nur ein Alias für !isset($thing) || !$thing
. Wenn das, was Sie überprüfen, immer vorhanden ist (in PHP sind immer Ergebnisse von Funktionsaufrufen vorhanden), ist die empty()
Funktion nichts anderes als ein Negationsoperator .
PHP hat kein Konzept von Leere . Werte, die als falsch ausgewertet werden, sind leer, Werte, die als wahr ausgewertet werden, sind nicht leer. Das ist gleich. Dieser Code:
$x = something();
if (empty($x)) …
und das:
$x = something();
if (!$x) …
hat in allen Fällen für alle Datentypen immer das gleiche Ergebnis (da $x
definiert empty()
redundant ist).
Der Rückgabewert der Methode ist immer vorhanden (auch wenn Sie keine return
Anweisung haben, ist der Rückgabewert vorhanden und enthält null
). Deshalb:
if (!empty($r->getError()))
ist logisch äquivalent zu:
if ($r->getError())
empty
folgende Adresse übergeben