empty() perlu mengakses nilai dengan referensi (untuk memeriksa apakah referensi itu menunjuk ke sesuatu yang ada), dan PHP sebelum 5.5 tidak mendukung referensi ke nilai sementara yang dikembalikan dari fungsi.
Namun, masalah sebenarnya yang Anda miliki adalah yang Anda gunakan empty()sama sekali, secara keliru percaya bahwa nilai "kosong" berbeda dari "salah".
Kosong hanyalah alias untuk !isset($thing) || !$thing. Ketika hal yang Anda periksa selalu ada (dalam hasil panggilan fungsi PHP selalu ada), empty()fungsi tidak lain adalah operator negasi .
PHP tidak memiliki konsep kekosongan . Nilai yang mengevaluasi ke false adalah kosong, nilai-nilai yang mengevaluasi ke benar adalah tidak kosong. Itu adalah hal yang sama. Kode ini:
$x = something();
if (empty($x)) …
dan ini:
$x = something();
if (!$x) …
selalu memiliki hasil yang sama, dalam semua kasus, untuk semua tipe data (karena $xdidefinisikan empty()adalah redundan).
Nilai kembali dari metode selalu ada (bahkan jika Anda tidak memiliki returnpernyataan, nilai balik ada dan berisi null). Karena itu:
if (!empty($r->getError()))
secara logis setara dengan:
if ($r->getError())
empty: wiki.php.net/rfc/empty_isset_exprs