empty()
muss auf den Wert per Referenz zugreifen (um zu prüfen, ob diese Referenz auf etwas Existierendes zeigt), und PHP vor 5.5 unterstützte keine Referenzen auf temporäre Werte, die von Funktionen zurückgegeben wurden.
Das eigentliche Problem, das Sie haben, ist jedoch, dass Sie empty()
Sie glauben fälschlicherweise, dass der Wert "leer" etwas anderes ist als "falsch".
Empty ist nur ein Alias für !isset($thing) || !$thing
. Wenn die Sache, die Sie überprüfen, immer existiert (in PHP existieren die Ergebnisse von Funktionsaufrufen immer), ist die empty()
Funktion ist nichts anderes als ein Negationsoperator .
PHP hat kein Konzept der Leere . Werte, die als falsch ausgewertet werden, sind leer, Werte, die als wahr ausgewertet werden, sind nicht-leer. Das ist das Gleiche. Dieser Code:
$x = something();
if (empty($x)) …
und dies:
$x = something();
if (!$x) …
hat immer das gleiche Ergebnis, in allen Fällen, für alle Datentypen (weil $x
ist definiert empty()
ist überflüssig).
Der Rückgabewert der Methode ist immer vorhanden (auch wenn Sie nicht über return
Anweisung, Rückgabewert existiert und enthält null
). Deshalb:
if (!empty($r->getError()))
ist logisch äquivalent zu:
if ($r->getError())