call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
call_user_func_array函数也可以调用类内部的方法的
Class ClassA
{
function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));
//显示 333
?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//显示 1
call_user_func_array('a', array(&$c));
echo $c;//显示 2
今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的:
call_user_func_array
(PHP 4 >= 4.0.4, PHP 5)
call_user_func_array -- Call a user function given with an array of parametersDescription
mixed call_user_func_array ( callback function, array param_arr )Call a user defined function given by function, with the parameters in param_arr.
然后还有一个例子:
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/464a68624591d006eaf8f831.jpg)
相信看了例子之后应该有点明白了吧?
我自己是这么理解这个函数的,如果说的不对,还望各位高手不要耻笑:
该函数真正的用法有点类似于函数重载,因为他的第一个参数是字符型的,也就是函数的名称,第二个参数是数组,我们可以当成该函数的各个参数,而事实上也就是这么用的,如果你看过我的前一篇文章:PHP的伪重载 ,或许你能够理解,正是因为这个函数的存在,我发现函数重载也可以这样运用:
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/0010c9820d9a5b959023d931.jpg)
2
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/d5560fd5fb81c09fa044df31.jpg)
3
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/237db37cad22327a0dd7da31.jpg)
4
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/112aae363720e5f5d1a2d331.jpg)
5
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/e9ecb1b5a0005bb630add131.jpg)
6
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/bcb99221fc7ff606ac34de31.jpg)
7
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/60cc0ff6430f9cad7709d731.jpg)
8
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/27b3a246c0960ec0b3b7dc31.jpg)
9
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/1d5a5a80dd1587e00df4d231.jpg)
10
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/c6674834da0d799fa2cc2b31.jpg)
11
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/1cc12ddfdb6e2b9b8c102931.jpg)
12
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/02d9d3a07d5666efcaefd031.jpg)
13
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/bc9a32afb84d214b4a36d631.jpg)
14
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/13a27fdbf7b256ab38012f31.jpg)
15
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/3d7e02eb45a3767db90e2d31.jpg)
16
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/896f223dc6ac2cae55e72331.jpg)
17
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/fb58afad597ff48e7dd92a31.jpg)
18
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/9eb3a0ce057bda5200e92831.jpg)
19
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/086078eed44561932e2e2131.jpg)
20
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/ccb78e127a4b6e43203f2e31.jpg)
21
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/b1873a035c9def4c7aec2c31.jpg)
22
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/cb8257e5b773786cb8382031.jpg)
23
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/e48935d3ad8cee7a9a502731.jpg)
24
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/86bf2c2c3a9acc124ec22631.jpg)
25
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/09569852ca60822084352431.jpg)
26
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/2b3e4cc053c0d277e4dd3b31.jpg)
27
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/650c86376d7fb05391ef3931.jpg)
28
![](http://hiphotos.baidu.com/027%D0%A1%B0%D7%B2%CB/pic/item/55b3e4131a4d2184a6ef3f31.jpg)