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

对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用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','《简单爱》');
红颜莎娜
浏览 375回答 1
1回答

婷婷同学_

我一般也很少用到这个函数,但是当动态调用类的静态方法时它还是有作用的: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()类似,只不过后者第二个参数传入的是数组而已。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript