Re: Allow non-variable arguments to empty()
| From: | Xinchen Hui | Date: | Wed, 11 Apr 2012 00:25:26 +0000 |
| Subject: | Re: Allow non-variable arguments to empty() | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-59693@lists.php.net to get a copy of this message | ||
Sent from my iPad
在 2012-4-11,6:54,Nikita Popov <nikita.ppv@googlemail.com> 写道:
> 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.
+1 for this, but what about is set? They shou be consistent, :)
Thanks
>
> 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
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>