calluserfuncarray php 错误,call_user_func_array用法

在ecmall和discuz的源码中大量使用这个call_user_func_array,不得不认真看看它的使用方法了。简单来讲,就是调用一个函数或者一个类中的某个成员函数。手册上的原型是这样的:

call_user_func_array($callback,array $param_arr)

第一个参数是函数名,第二个参数是参数数组,返回值是大杂烩。

还是写个demo看看了:

function a($b, $c)

{

echo $b;

echo $c;

}

call_user_func_array('a', array("111", "222"));

//显示 111 222

?>

Class ClassA

{

function bc($b, $c) {

$bc = $b + $c;

echo $bc;

}

}

call_user_func_array(array('ClassA','bc'), array("111", "222"));

//显示 333

?>

在ecmall的\includes\ecapp.base.php里面有一段:

/**

* 显示错误警告

*

* @author Garbin

* @param none

* @return void

*/

function show_warning()

{

$args = func_get_args();

call_user_func_array('show_warning', $args);

}

实际上这个show_message()函数最终是eccore/controller/messages.base.php文件中定义的:

/**

* send a system warning message

*

* @param string $msg

*/

function show_warning ($msg)

{

$a = _trigger_message(func_get_args());

_message(serialize($a), E_USER_WARNING);

}

这里的func_get_args将变量数组取出来,也就是得到上面的$args了。

最后扯几句闲话,从初学者的角度来讲,PHP的强大之处在于它的灵活性,变量可以作为变量名,也可以作为函数名,直到PHP运行前,你都不知道调用的是那个类的那个方法,这是C++和Java无法想象的。也正因为这种灵活性,使得初学者举步维艰。因为在IDE中,你无法F3定位到函数的声明,够折磨人的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值