On Thu, Mar 24, 2016 at 8:05 PM, Sara Golemon <poll...@php.net> wrote:
> On Thu, Mar 24, 2016 at 11:50 AM, Colin O'Dell <colinod...@gmail.com> > wrote: > > Would your proposal also allow !==== to work? > > > I think you means !===, which is "not-identical assignment" (!== =) > > !==== is just *CRAZY TALK* > We shouldn't dismiss such things out of hand, Sara. Consider the following argument: There is a binary !== operator. The compound assignment version of it is !===. But that again is a binary operator! So there should be a !==== compound assignment operator as well. By induction over the natural numbers it follows that !== followed by an arbitrary number of =s should be a valid compound assignment operator. However, when considering the expansion, we see: $a !==== $b; // same as $a = $a !=== $b; // same as $a = $a = $a !== $b; It is now evident that $a !==== $b (or any additional number of =s) has the same meaning as $a !=== $b. A difference could only arise if the left-hand side is an object implementing __set or ArrayAccess, in which case !==== would cause an additional call to __set / offsetSet. Given that !==== and !=== would be, apart from the edge-case of overloaded objects, identical, I must concur with your original judgement that only supporting !=== is sufficient. Thanks, Nikita