php中的匿名函数和use怎么使用
评论PHP匿名函数
匿名函数 顾名思义就是没有名字的函数。 php中也叫做闭包函数
函数没有名字怎么定义,怎么用呢?
定义方法
$hi = function () {
echo 'hi';
};
这个就是个匿名函数, 注意后的分号.
使用方法
$hi(); // 这样就运行了
$new_hi = $hi;
$new_hi(); // hi
可以看到使用方法也是挺简单的,当做一个变量,然后后面加上 ()
就可以运行了。
怎么使用
可以当做一个参数去用
比如一个问题: 如何把 this_is_test_var -> thisIsTest_Var
$ans = preg_replace_callback("#_([a-z])#", function ($match) {
return strtoupper( $match[1]);
}, "this_is_test_var");
var_dump($ans); // string 'thisIsTestVar' (length=13)
这里 使用一个匿名函数,作为 preg_replace_callback 的参数(二个参数)
传递参数的问题 use
这个准确的说应该是 use 使父作用域的变量可以在匿名函数内使用
$name = "zhangs";
$f = function () use ($name) {
echo $name;
};
$f();
这里如果写 $f = function($name) { echo $name };
那么两个 $name ,就会出现两次问题提示。
一个思考 A or B
$var = 'A';
$f = function () use ($var) {
echo $var;
};
$var = 'B';
$f();
这里的结果是 A , 不是B
理由: $f 是在程序的运行过程中创建的, 当创建的时候 $var = 'A'; 所以输出是 'A'.
如何输出 B
方法也很简单,使用引用就可以。 $var -> &$var
// function () use ($var)
// -> function () use (&$var)