PHP教程/ call_user_func function() use() {}
1:call_user_func()
$ret = call_user_func($operate, $object, $params);
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。
<?php function barber($type) { echo "You wanted a $type haircut, no problem\n"; } call_user_func('barber', "mushroom"); call_user_func('barber', "shave"); ?>
以上例程会输出:
You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem
匿名函数 闭包语法介绍 function() use() {}
使用传值
在创建闭包时, 生成所use变量的快照, 下文再次调用闭包函数时, 快照变量不改变
$a = 5; $b = function ($x) use ($a) { $a += $x; echo $a; }; $a = 10; // 这个变量被再次赋值, 但是在use语句中的'快照'是不会改变的 $b(100); // 输出 : 105
使用引用传值
生成所use变量的指针, 下文再次调用闭包函数时, 快照变量会改变(其实这样做与直接传参已经没有区别, 所以这么做意义不大, 而且代码可读性降低)
$a = 5; $b = function ($x) use (&$a) { $a += $x; echo $a; }; $a = 10; // 变量重新赋值, 上文中闭包所引用的变量值也被改变 $b(100); // 输出 : 110