PHP lambda 与 闭包
程序员文章站
2024-02-19 21:15:46
...
lambda、
我自己的理解,lambda就是把方法名保存到一个变量里面去调用方法,典型的create_function所返回的就是lambda方法。
1 $newfunc = create_function('$a', 'echo "what u put in is " . $a;');2 $newfunc('aaaaa');
更简单地可以自己去写lambda方法的名称,然后用以这种形式去调用。
1 function dump($a){2 var_dump($a);3 }4 $a = 'dump';5 $a('321');
闭包、
这里单单从语法上说一下PHP的闭包,考虑下面的代码:
1 class ClosureTest{ 2 public $multiplier; 3 public function __construct($multilier){ 4 $this->multiplier= $multilier; 5 } 6 7 public function getClosure(){ 8 $self = $this; 9 return function($number) use($self) {10 return $number * $self->multiplier;11 };12 }13 }14 15 $test = new ClosureTest(10);16 $x = $test->getClosure();17 echo $x(8);18 $test->multiplier= 11;19 echo $x(8);
最后结果为:8088.
必须用到use向闭包中传值,否则在调用时将提示变量未被定义的Notice。
闭包无法直接传递$this指针,所以这里先将$this保存在了$self中。
还有一点代码中没有体现出来,通过use传类成员到闭包中必须通过引用传递,否则在后来修改改成员的值后比包中的值不会被改变。
上一篇: PHP扩展迁移为兼容PHP7记录
推荐阅读
-
Java与Scala中的闭包 博客分类: 函数式语言 JavaScalajava7SQLJDK
-
Java与Scala中的闭包 博客分类: 函数式语言 JavaScalajava7SQLJDK
-
谈PHP 闭包特性在实际应用中的问题_PHP
-
PHP闭包函数传参及使用外部变量的方法,php变量_PHP教程
-
详解python函数的闭包问题(内部函数与外部函数详述)
-
PHP 闭包使用
-
PHP闭包特性应用:代替循环,提高代码性能。
-
学习 PHP 5.3 的闭包: function() use(&$param)
-
javascript闭包 - php中的闭包函数和匿名函数有区别吗,何谓闭包?
-
PHP中的闭包(匿名函数)浅析