Re: Re: 5dee3c11 break
| From: | Levi Morrison | Date: | Tue, 06 May 2014 14:50:51 +0000 |
| Subject: | Re: Re: 5dee3c11 break | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-73979@lists.php.net to get a copy of this message | ||
On Tue, May 6, 2014 at 8:46 AM, Dmitry Stogov <dmitry@zend.com> wrote:
>
> On Tue, May 6, 2014 at 5:11 PM, Levi Morrison <levim@php.net> wrote:
>
>> On Tue, May 6, 2014 at 6:43 AM, Dmitry Stogov <dmitry@zend.com> wrote:
>>
>>> zend_std_has_dimension() doesn't know what (check_empty == 2) means.
>>>
>>> check_empty == 0 - ISSET => we don't need to call offsetGet() and relay
>>> on
>>> offsetExists() return value.
>>> check_empty == 1 - ISEMPTY => we should call offsetGet() after
>>> offsetExists().
>>>
>>> NULL values should be handled by offsetExists().
>>>
>>
>> I am a bit curious,
isset checks that the variable exists
>> and is not
>> null; empty checks that the variable exists and is not
>> empty. Why does
>> one call offsetGet and not the other? Both look at the
>> value.
>>
>> Sorry if I missed that bit of conversation.
>>
>
> yeah, no problem :)
> I also, don't talk that my opinion is completely right.
>
> I think that we make us and users more and more troubles with this messy
> behavior.
>
> Actually, you introduced new behavior (NULL check) and broke at least ZF2
> and probably many based on it applications.
>
That isn't any new behavior, at least it shouldn't be. isset does not
ONLY check existence, it checks that the value is not null; see
http://php.net/isset
It leads to crash and it'll make bad php experience.
> Then someone will report it as a security problem and we all will be
> blamed :(
> We shouldn't make existing applications crash!
>
Agreed, but at least from what I understand the current behavior doesn't do
what it is supposed to anyway. Sometimes bugs become features but I really
don't see this as one of those. We should fix this. That's my $0.02.