Re: [RFC] Make empty() a Variadic
| From: | Dan Ackroyd | Date: | Sat, 21 Feb 2015 15:36:27 +0000 |
| Subject: | Re: [RFC] Make empty() a Variadic | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-83397@lists.php.net to get a copy of this message | ||
On 21 February 2015 at 07:20, Markus Fischer <markus@fischer.name> wrote:
> On 21.02.15 06:11, Thomas Punt wrote:
> From the RFC:
>> Also, it will make empty() more inline with the not-too-disimillar isset(),
>
> Here I disagree.
>
> I would have assumed from the start that empty() would only return true
> if *all* of the entries are empty, i.e. AND things together.
The problem stems from the fact that 'empty' is a falsy statement as
it returns true when something is not set. Combining two positive
results in another positive statement. Combining two negative
statements results in a positive statement.....except when it doesn't.
You always have to think about what is the correct way to combine
them.
From the RFC:
> In PHP, it is not uncommon to see conditionals consisting of multiple empty()
> invocations. This is evident by simply browsing through some popular open
> source projects
This is subjective opinion, but at least two of those code examples
are horrible. In particular the phpBB code shows the problem of using
compound 'falsy' statements:
return !(
empty($this->config['jab_enable']) ||
empty($this->config['jab_host']) ||
empty($this->config['jab_username']) ||
empty($this->config['jab_password']) ||
!@extension_loaded('xml')
);
Seriously, a double-negative at the end of a five piece statement that
combines falsy things? Making it easier to write bad (imo) code does
not seem a good reason for a change.
cheers
Dan