• php5.3的here doc新特性

    2008-04-06 22:56

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://syre.blogbus.com/logs/18452967.html

    未来的php5.3多了许多新特性。上回pea活动,在ben那里的新特性列表里,发现一个原来忽略的。就是here doc现在可以不处理里面的字符串了。就像这样:

    $code =<<<'END'
        $a = 1;
        echo "$a\n";
    END;
    echo $code;

    这样有什么好处呢?本来,php是没有block或者lambda表达式这样的东西的。create_function由于那个参数是个字符串,也不怎么好使。现在可以更方便地用here doc来实现类似的功能了。比如这个:

    class ArrayList {
        private $arr;
        function __construct($arr) {
            $this->arr = $arr;
        }

        function each($call) {
            foreach ($this->arr as $item) {
                call_user_func($call, $item);
            }
        }
    }

    $a = new ArrayList(array(1,2,3,4,5));
    $a->each(create_function('$item', <<<'END'
        echo "[$item]\n";
    END
    ));

    虽然比起ruby来要丑陋多了,变量作用域也不一样。不过总算聊胜于无。

     

    引用地址:

    评论

  • 我的前世之妻子害我今生的缘分
    http://luhenyuan-123.blog.163.com/blog/edit/
    【神仙】回复我知道说:
    - -|||
    2008-06-09 11:19:33
  • it's name is "here doc", not "hear doc"
    【神仙】回复developerworks说:
    说得是……
    - -|||
    2008-05-27 16:21:50

发表评论

您将收到博主的回复邮件
记住我