注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

php中调用函数的函数call_user_func和call_user_func_array  

2017-09-15 08:48:48|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这两个函数功能强大,在很多场合可以根据条件灵活调用不同的用户自定义函数,比如根据图片文件类型来调用不同的创建方法什么的就非常有必要用到这个。
下面来说说它们的简要用法。
1)call_user_func。

<?php
//测试函数
function test($arg1,$arg2){
echo $arg1.$arg2;
}
class class_test{
//类中方法
function class_fun_test($arg1,$arg2){
echo $arg1.$arg2;
}
}
//直接调用函数
call_user_func('test', "www.","593668.com");
//调用类内部方法,这里的参数提交的有点奇怪,需要用array
call_user_func(array("class_test", "class_fun_test"), "www.","593668.com");
?>

2)call_user_func_array,与call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰。

<?php
//测试函数
function test($arg1,$arg2){
echo $arg1.$arg2;
}
class class_test{
//类中方法
function class_fun_test($arg1,$arg2){
echo $arg1.$arg2;
}
}
//直接调用函数
call_user_func_array('test', array("www.", "593668.com"));
//调用类内部方法,这里的参数提交的有点奇怪,需要用array
call_user_func_array(array("class_test", "class_fun_test"), array("www.", "593668.com"));
?>

以上的返回页面都是形如:
php中调用函数的函数call_user_func和call_user_func_array - 1976xyg - 红尘若梦
 看了之后,是不是感觉非常简单,但是别看它们简单,可是用处很大的,而且还支持引用哦。

<?php
//测试函数
function test(&$arg){
$arg++;
}
$index = 0; //设置变量
//直接调用函数
call_user_func('test', &$index);
echo $index;//显示 1
//调用类内部方法,这里的参数提交的有点奇怪,需要用array
call_user_func_array("test", array(&$index));
echo $index;//显示 2
?>

下面再用图片文件创建的例子来示范下:

<?php
//创建图片文件
function createimage($pic){
$pathInfos = pathinfo($pic);
switch( strtolower($pathInfos['extension']) ) {
case 'jpg':
case 'jpeg':
$imagecreatefrom = 'imagecreatefromjpeg';
break;
case 'png':
$imagecreatefrom = 'imagecreatefrompng';
break;
case 'gif':
$imagecreatefrom = 'imagecreatefromgif';
break;
default:
$imagecreatefrom = 'imagecreatefromstring';
break;
}
return call_user_func($imagecreatefrom, $pic_path);
//或者用如下的语句来返回
//return call_user_func_array($imagecreatefrom, array($pic_path));
//这里还有另外一个简单办法
//return $imagecreatefrom($pic);
}
$resource = createimage("593668.com.jpg"); //创建jpg图片
if(!$resource){
echo "创建成功!";
}else{
echo "创建失败!";
}
?>

这里您可以看到,其实还有一个简单的办法来调用函数,即直接用$+函数名,同样可以,而且调用的参数什么的也跟正常的一样,至于大家喜欢用那种,就请自便吧。




  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017