php闭包函数比如你现在就可以这样使用:
代码如下 | 复制代码 |
$closure = function($param) { echo $param; }; |
感觉和js是不是一样的用法了.
一些闭包函数实例
代码如下 | 复制代码 |
function test(){ $test=''; $test=function ($str){ echo 'test'; return $str; }; timeout('Y-m-d H:i:s',function ($time){ //$this->date=time(); return $time-24*60*60; }); var_dump($test(‘hello word!’)); } |
上例输出
2013-11-19 16:24:56teststring(11) “hello word!”
这样子参数便可以用函数了。
条件是,php3.0以后php 4.0以后闭包函数支持$this用法
闭包函数通常被用在preg_match等有callback的函数
代码如下 | 复制代码 |
class A { private static $sfoo = 1; private $ifoo = 2; } $cl1 = static function() { return A::$sfoo; }; $cl2 = function() { return $this->ifoo; }; $bcl1 = Closure::bind($cl1, null, ‘A’); |
输出
1
2
bind将类可以在闭包函数中使用
代码如下 | 复制代码 |
class A1 { function __construct($val) { $this->val = $val; } function getClosure() { //returns closure bound to this object and scope return function() { return $this->val; }; } } $ob1 = new A1(1); $cl = $ob1->getClosure(); |
以上例程的输出类似于:
1
2
bindto在类里可以再次绑定类
代码如下 | 复制代码 |
$fn = function(){ return ++$this->foo; // increase the value }; class Bar{ $bar = new Bar(); $fn1 = $fn->bindTo($bar, ‘Bar’); // specify class name echo $fn1(); // 2 ?> |
在类之外需要绑定类才能用,绑定可以是类名,也可以是对象,绑定过之后可以再次绑定不需要提拱类名或对象