您的位置:首页 > 编程语言 > PHP开发

php函数call_user_func_arrray、call_user_func、func_get_args、func_num_args的用法

2014-02-08 15:58 501 查看
因为刚接触php所以今天在工作用遇到一个函数call_user_func_array,不懂,于是就去搜了一下,本想这只搜这个函数的用法,结果,搜到的不止这个,还有很多函数的用法,外加一个惊喜,因为这些函数的存在,php函数的重载也可以这么利用!!

首先说两个简单的,基础的,后面会例子里面会用到的:func_get_args和func_num_args,从名字看就大概猜的到了。

func_get_args是获取函数的参数列表,是数组类型,这个要注意。

func_num_args是获取函数的参数的个数。

然后就是主要的两个函数了:call_user_func和call_user_func_array,这两个都是动态调用函数时经常用到的。

call_user_func:

1、第一种是调用孤独的函数:

function funa($b,$c)
{
echo $b;
echo $c;
}
call_user_func('funa', "111","222");
call_user_func('funa', "333","444");
//显示 111 222 333 444

2、第二种是调用类内部的函数:
class a {
function b()
{
$args = func_get_args();
$num = func_num_args();
print_r($args);
echo $num;
}
}
call_user_func(array("a", "b"),"111","222");
这个结果大家应该看的出来的,如果不确定最好自己运行下试试。

call_user_func_array:用法和call_user_func接近,只是参数传入的是数组。

1、同call_user_func一样
function a($b, $c)
{
echo $b;
echo $c;

}
call_user_func_array('a', array("aa", "ss"));
//显示 aa ss


2、可以调用类内部函数
Class ClassA
{

function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("1", "2"));
//显示 3
下面是一个更好的例子,实现了函数的重载
function test1($a){
echo ('一个参数'."\n");
}
function test2($a,$b){
echo ('两个参数'."\n");
}
function test3($a, $b, $c){
echo ('三个参数'."\n");
}

function test(){
$args = func_get_args();
$num = func_num_args();
call_user_func_array('test'.$num, $args );
}
test("a");
test("a", "b");
test("a", "b", "c");
这个非常建议大家自己写一下运行看下效果,其中里面的代码写的也很精简,值得学习。

以上就是因为一个函数引来的收获,哈哈

ps:以上例子很内容是由参考别人文章后自己终结点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: