The Problem with empty()

http://stackoverflow.com/questions/1075534/cant-use-method-return-value-in-write-context/4328049#4328049

empty() needs to access value by reference (in order to check whether that reference points to something that exists), and PHP before 5.5 didn’t support references to temporary values returned from functions.

However, the real problem you have is that you use empty() at all, mistakenly believing that “empty” value is any different from “false”.

Empty is just an alias for !isset($thing) || !$thing. When the thing you’re checking always exists, the empty() function is nothing but a negation operator.

PHP doesn’t have concept of emptyness. Values that evaluate to false are empty, values that evaluate to true are non-empty. It’s the same thing. This code:

$x = something();
if (empty($x)) …
and this:

$x = something();
if (!$x) …
has always the same result, in all cases, for all datatypes (because $x is defined empty() is redundant).

Return value from the method always exists (even if you don’t have return statement, return value exists and contains null). Therefore:

if (!empty($r->getError()))
is logically equivalent to:

if ($r->getError())

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s