PHP中神奇的闭包,令我大开眼界.

class a
{
    function b($i)
    {
        return $i+100;
    }
    
    function d()
    {
        for($i=0;$i<10;$i++)
        {
            $new[$i] = function($i){return $this->b($i);};
        }
        return $new;
    }
}

$a = new a;
$b = $a->d();

foreach($b as $k => $v)
{
    echo $v($k);
}


类a中d动作里的$this在外面竟然能正确取值,太神奇了,这闭包比JS方便啊!

作者: PHP人   发布时间: 2012-12-16

和其他的一样, js本来也可以

作者: qai41   发布时间: 2012-12-17

你的php版本是啥,为何我的不可以执行

作者: kuaileshi   发布时间: 2012-12-27

无法执行,楼主的能执行吗 ?php版本号是多少?我的会报:Parse error: syntax error, unexpected T_FUNCTION错误!

作者: kenvinwei   发布时间: 2013-04-11

kuaileshi 发表于 2012-12-27 10:13
你的php版本是啥,为何我的不可以执行

闭包应该是5.3以后的才支持吧

作者: 7Se‰單壹   发布时间: 2013-04-12

楼主的php版本应该是php5.4.x,php5.3才支持闭包,php5.4之后才支持匿名函数使用$this

作者: 单骑闯天下   发布时间: 2013-04-13

很厉害的样子··我是来学习的··

作者: niexuchao   发布时间: 2013-04-16

单骑闯天下 发表于 2013-4-13 21:47
楼主的php版本应该是php5.4.x,php5.3才支持闭包,php5.4之后才支持匿名函数使用$this ...

php越来越复杂。。。

作者: hpu423   发布时间: 2013-04-18

貌似以前也一直那么用的,没觉得多特别,可能没注意吧,呵呵

作者: tommercatfly   发布时间: 2013-04-18

额,我是初学的。关闭包是什么啊?

作者: lantianchen   发布时间: 2013-04-19

为什么我的也不能运行呢?

作者: 艺小昔   发布时间: 2013-04-20

类a中d动作里的$this在外面竟然能正确取值

这话讲得真初级!!!!!!

作者: 小狮子   发布时间: 2013-04-25

帮撸主把高亮加上了

作者: qxhy123   发布时间: 2013-04-25

5.3之后才支持匿名函数。个人不喜欢这样写。。很容易搞混乱。

作者: ywisax   发布时间: 2013-04-30

闭包函数 是5.3及以后

作者: tanjianling   发布时间: 2013-05-28