函数说明
(PHP 4中,PHP 5中)
call_user_func - 返回一个自定义用户函数给出的第一个参数
函数定义
mixed call_user_func(回调 函数名 [,混合 参数 [,混合$ ...]])
调用用户定义函数来确定函数参数。
功能
该函数被调用。类方法也可以使用静态调用传递数组array($classname, $methodname) 这个参数此功能。另外一个对象的实例可以被称为类方法通过传递数组array($objectinstance, $methodname) 这个参数。
参数
零个或多个参数传递给函数。
注意: 对于call_user_func(参数)不按引用传递。
实例说明
例-1
<?php
error_reporting(E_ALL);
function increment(&$var)
{
$var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a."\n";
call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a."\n";
?>
输出:
0
1
例-2
<?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
实例
实例应用
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
?>