Allow non-variable arguments to empty()

From: Date: Tue, 10 Apr 2012 22:53:38 +0000
Subject: Allow non-variable arguments to empty()
Groups: php.internals 
Request: Send a blank email to internals+get-59681@lists.php.net to get a copy of this message
Hey internals! Currently the empty() language construct only works on variables. You can write if (empty($array)) but not empty if (empty(getSomeArray()). The original reason for this restriction probably is that - in a way - it "doesn't make sense" to pass anything but a variable to empty() as you could just use the ! operator in this case. if (empty(getSomeArray())) is logically equivalent to if (!getSomeArray()). I'd like to propose to change empty() to accept arbitrary expressions. The reason is simple: Even though it is possible to write if (!getSomeArray()) with the same effect, if (empty(getSomeArray())) reads much nicer. !getSomeArray() to me somehow implies that getSomeArray() may return a bool(false) or something like that. On the other hand empty(getSomeArray()) seems naturally fit for checking for empty arrays. Another reason is that currently you get a very obscure error message if you try to use empty() on a function return value: "Can't use function return value in write context". Aha. Where did I try to write to the return value?! So, what do you think? Nikita PS: The patch is trivial: https://gist.github.com/2355274

« previous php.internals (#59681) next »