On Wed, Aug 20, 2014 at 3:41 PM, Levi Morrison <le...@php.net> wrote:
> On Wed, Aug 20, 2014 at 7:30 AM, Paul Dragoonis <dragoo...@gmail.com> > wrote: > > On Tue, Aug 19, 2014 at 3:32 AM, Andi Gutmans <a...@zend.com> wrote: > > > >> Hi Nikita, > >> > >> I reviewed the AST RFC on my way to vote but there was something that > >> wasn’t clear to me. > >> This patch introduces some semantic/behavioral changes in addition to > the > >> AST. > >> Are these as a side-effect of how AST was implemented? Or are they > >> unrelated to the AST patch? > >> I think some of them make sense but I’m having a bit of a hard time > >> separating out the benefits of the AST (which I really like) and making > >> other changes to semantics w/o really understanding if they are > >> side-effects and we have no choice vs. we’re trying to solve for two > >> separate items in one RFC. > >> Any BC breaks here we think could bite us? > >> > > > > Hi Nikita, > > > > I second some of Andi's concerns about behavioural changes, some things > > working from right-to-left and not left-to-right. Are these things that > we > > can adapt the AST part or tweak another part to make this more consistent > > with previous versions of PHP. > > I just had a chat with Paul about this, and there was a > misunderstanding about what this RFC actually does regarding > left-to-right evaluation on list() constructs. I also saw this > misunderstanding in a few other places, so it seems to be a common > misunderstanding. > > Under the proposed changes as well as in PHP 5.x, the end result of > the following is the same: > > list($a, $b) = array(1, 2); > > $a will be 1 and $b will be 2. Again, this hasn't changed. The > difference is that in PHP 5.x the variable $b will be assigned 2 > before $a is assigned 1; under these changes $a will be assigned 1 > first and then $b will be assigned 2. > I'm happy with this behaviour and agree that the AST version is what I would expect, my confusion was that I thought PHP 5.x was 1,2 and the AST was 2,1 which it of course is not the case. Now you could see why I raised concerns about this in the first place. > > This really only affects strange situations, such as ones listed in the > RFC. >