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. This really only affects strange situations, such as ones listed in the RFC. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php