php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。
闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。
1 2 3 |
|
闭包的几个作用:
1 减少foreach的循环的代码
比如手册http://php.net/manual/en/functions.anonymous.php 中的例子Cart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
这里如果我们改造getTotal函数必然要使用到foreach
2 减少函数的参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
3 解除递归函数
1 2 3 4 5 6 7 8 9 10 |
|
注意上题中的use使用了&,这里不使用&会出现错误fib(fib(n-1)是找不到function的(前面没有定义fib的类型)
所以想使用闭包解除循环函数的时候就需要使用
1 2 3 4 |
|
这样的形式
4 关于延迟绑定
如果你需要延迟绑定use里面的变量,你就需要使用引用,否则在定义的时候就会做一份拷贝放到use中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
使用引用和不使用引用就代表了是调用时赋值,还是申明时候赋值