学习 PHP 5.3 的闭包: function() use(&$param)

发布时间:2020-06-18编辑:脚本学堂
有关 PHP 5.3 的闭包: function() use(&$param) 方面的内容,有需要的朋友可以参考下。PHP 的变量作用域是函数级的,没有层级作用域。

有关 PHP 5.3 的闭包: function() use(&$param) 方面的内容,有需要的朋友可以参考下。

PHP 的变量作用域是函数级的,没有层级作用域。

5.3 增加了闭包
1、可以用变量引用函数
2、可以声明匿名函数
3、可以使用函数作为 函数的参数和返回值
4、声明函数时可以使用 use($param)  来向函数中传入函数外的变量,结合变量引用来实现闭包
 

复制代码 代码如下:

<?php
function closureCreater(){
$x =1;
return function($fun=null) use(&$x){//按引用传值
echo "<br />".$x++;
$fun and $fun();
};
}

$x = "hello world";
$test = closureCreater();
$test();
$test(function(){ echo "closure test one"; });
$test(function(){ echo "closure test two"; });
$test(function() use($x){ echo "<br />".$x;});
 
//将函数保存为数组元素
$x = 'outer param.';
$arr = array();
$arr[] = function($str)use($x){ return $str.$x; };
echo $arr[0]('test fun in arr,');  //test fun in arr,outer param.
?>