Allow non-variable arguments to empty()
| From: | Nikita Popov | 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