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

 

posted @ 2018-01-25 21:54  热爱世界的初学者  阅读(197)  评论(0编辑  收藏  举报