call_user_func和call_user_func_array的用法详解
call_user_func和call_user_func_array的定义
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
Calls the callback given by the first parameter and passes the remaining parameters as arguments.
调用由第一参数给出的回调函数,并将其余的参数作为回调函数的参数。
mixed call_user_func_array ( callable $callback , array $param_arr )
Calls the callback given by the first parameter with the parameters in param_arr.
调用由第一参数给出的回调函数,并将数组param_arr的参数作为回调函数的参数。
Returns the return value of the callback, or FALSE on error.
返回回调函数的返回值,出错时返回FALSE。
由上面手册给的说明来看,call_user_func 和 call_user_func_array 函数功能基本差不多。
注意NOTE:
1. 需要注意的一点事,call_user_func()的回调函数参数不能通过引用传递,而 call_user_func_array ()是可以的。比如下面这个例子:
2. 在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。
上面的程序会输出:
0
1
下面我们通过例子来了解下call_user_func和call_user_func_array 具体怎么用
call_user_func() 和 call_user_func_array() 例子
上面程序输出:
You wanted a mushroom haircut, no problem You wanted a shave haircut, no problem
上面程序输出:
You wanted a mushroom haircut, no problem ! You wanted a shave haircut, no problem !
call_user_func() 和 call_user_func_array() 可以调用类内部的方法
call_user_func() 和 call_user_func_array() 可以用于命名空间
call_user_func() 和 call_user_func_array() 可以用于闭包函数和 lambda 函数
';}}Benchmark(function(){for ( $i = 0; $i <= 10000; $i++ ){ }},
function(){$i = 0;while ( $i <= 10000 ){$i++;}});?>//print Time: 0.001652
//print Time: 0.001458
http://www.php.net/manual/zh/function.call-user-func.php
http://www.php.net/manual/zh/function.call-user-func-array.php
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
