为了账号安全,请及时绑定邮箱和手机立即绑定

使用call_user_func_array()来回调执行函数与直接使用函数的区别是什么?

使用call_user_func_array()来回调执行函数与直接使用函数的区别是什么?

红颜莎娜 2019-04-09 20:25:40
对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用call_user_func_array()这个函数的优势的场景。谁知道的告知下。给个介绍的文章链接也行~functionfoo($a,$b){return2*(intval($a)+intval($b));}functionbar($a,$b){return3*foo($a,$b);}echobar(3,2);functionfoo($a,$b){return2*(intval($a)+intval($b));}functionbar(){return3*call_user_func_array('foo',func_get_args());}echobar(3,2);参考一楼大拿给的,的确不错:functionplayVideo($video){echo'哥在用用Video看电影-',$video;}functionplayAudio($artist,$music){echo'哥在用Mp3听',$artist,'的歌-',$music;}functionplay(){$args=func_get_args();$functionName=array_shift($args);call_user_func_array('play'.$functionName,$args);}play('Video','《功夫》');echo'';play('Audio','Jay','《简单爱》');
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我一般也很少用到这个函数,但是当动态调用类的静态方法时它还是有作用的:
classfoo
{
publicstaticfunctionfunc()
{
var_dump(func_get_args());
}
}
call_user_func_array(array('foo','func'),array('helloworld'));
至于动态调用普通函数时,在这种情况下也是很有作用:
functionplayVideo($type,$src)
{
echo'Iwillwatch'.$src;
}
functionplayAudio($type,$src,$artist)
{
echo'Iwilllistento'.$artist.'\'s'.$src;
}
functionplay()
{
$args=func_get_args();
call_user_func_array('play'.$args[0],$args);
}
play('Video','功夫.rmvb');
echo"and";
play('Audio','简单爱.mp3','Jay');
我相信你现在已经明白它的作用了。此外,call_user_func()和call_user_func_array()类似,只不过后者第二个参数传入的是数组而已。
                            
查看完整回答
反对 回复 2019-04-09
  • 1 回答
  • 0 关注
  • 374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信