匿名函数实现了一个简单的匿名函数:$func=function(){echo"thisisafunc\n";};上面是一个简单的匿名函数,定义一个函数体,将函数体赋值给一个变量(php5.3后支持)。实现闭包1.将其作为参数传递:_dog);};$pig=function(){var_dump($this->pig);};//传入null,$this不能用,但是传入ClassA,可以访问static等$bindCat=Closure::bind($cat,null,'A');echo"bindcat\n";$bindCat();//传入新的A()对象,A类,使用$this可以访问私有属性。$bindDog=Closure::bind($dog,newA(),'A');echo"binddog\n";$bindDog();//是传入类对象,不能使用$this$bindDog2=Closure::bind($dog,null,'A');echo"binddog2\n";$bindDog2();输出:bindcatstring(3)"cat"binddogstring(3)"dog"binddog2Fatalerror:UsingNon-staticformof$thiswhennotinobjectcontextClosure::bindToClosure::bind().总结PHP通过匿名函数实现闭包。可以通过将匿名函数作为参数或返回值传递来实现闭包。可以通过use关键字引入外部变量,复制引入的变量。所有的匿名函数都实现了Closure类,匿名函数可以通过Closure::bind()方法绑定到某个类上。
