Press "Enter" to skip to content

PHP RFC: 让PHP的foreach支持list

上个月, 终于算加入了PHP developer team, 一直以来最大的障碍就是语言, 现在想起来, 当年真应该更加认真努力的去学习英语.

得到的第一个任务是: 解决一个feature request, 请求在allow foreach($array as list($a,$b)

大意是说, 希望PHP能支持如下语法:

<?php
foreach (array(array(24,2333), array(31,4666)) as $k => list($a, $b)) {
    printf("key:%s, a=>%s, b=>%s\n", $k, $a, $b);
}
/** output:
key:0, a=>24, b=>2333
key:1, a=>31, b=>4666
*/

实现这个功能, 入手点就是去改写PHP的语法分析逻辑, 具体的实现我会再后面附上对PHP5.4的patch, 有兴趣的同学, 还可以参看我之前的一篇文章定制自己的PHP语法-在PHP中实现unless.

不过在后来的PHP 5.4要包含的新特性的投票中, 目前的情况是9赞成, 19反对, 看起来, 5.4中是不会包含这个特性了.

只能希望在下一次的大版本升级中加入了.

我就先把RFC和Patch放出来, 让对PHP语法分析这部分有兴趣的同学参考.

RFC: https://wiki.php.net/rfc/foreachlist

Patch for PHP5.4: http://www.laruence.com/php-dev/php-5.4.0svn-add-foreach-list-with-slient-support.patch

另外, 要说一下, 从PHP5.4开始, 语法分析这块的变化很大, 基本的数据结构都有很大的变化, 对于想从事PHP语言引擎学习的同学来说, 一定要注意.

8 Comments

  1. […] PHP RFC: 让PHP的foreach支持list Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2) […]

  2. […] PHP RFC: 让PHP的foreach支持list Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2) […]

  3. funlake
    funlake 2011-10-09

    恭喜候鸟大仙加入了pdt,有什么新进展别忘了给咱cn phper通报一下呀。

  4. 雪候鸟
    雪候鸟 2011-09-23

    @Ruchee 诶, 你可以通过firebug看下具体到你的browser是什么字体 🙂

  5. Ruchee
    Ruchee 2011-09-22

    博主,你好

    请问本文那段源代码是用的什么字体?我很喜欢,望告知^-^

  6. solu
    solu 2011-07-15

    现在5.3的应用都还没普及吧!

Leave a Reply

Your email address will not be published. Required fields are marked *