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 


更详细细致的学习,请在PHP手册中查看学习:

http://www.php.net/manual/zh/function.call-user-func.php

http://www.php.net/manual/zh/function.call-user-func-array.php





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部