PHP函数详解:call_user_func()使用方法

PHP函数详解:call_user_func()使用方法

UCenter源代码里有一个函数call_user_func,开始以为是自己定义的函数,结果到处都找不到。后来才知道call_user_func是PHP的内置函数,该函数允许用户调用直接写的函数并传入一定的参数,下面总结下这个函数的使用方法。

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:

01 <?php
02 function nowamagic($a,$b)  
03 {  
04     echo $a;  
05     echo $b;  
06 }  
07 call_user_func('nowamagic'"111","222");  
08 call_user_func('nowamagic'"333","444");  
09 //显示 111 222 333 444  
10 ?>

调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也挺有新意的:

01 <?php
02 class a {  
03     function b($c)  
04     {  
05         echo $c;  
06     }  
07 }  
08 call_user_func(array("a""b"),"111");  
09 //显示 111  
10 ?>  

call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:

1 <?php
2 function a($b$c)  
3 {  
4     echo $b;  
5     echo $c;  
6 }  
7 call_user_func_array('a'array("111""222"));  
8 //显示 111 222  
9 ?> 

call_user_func_array函数也可以调用类内部的方法的:

01 <?php
02 Class ClassA  
03 {  
04    
05 function bc($b$c) {  
06      $bc $b $c;  
07 echo $bc;  
08 }  
09 }  
10 call_user_func_array(array('ClassA','bc'), array("111""222"));  
11    
12 //显示 333  
13 ?>  

call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:

01 <?php
02 function a($b)  
03 {  
04     $b++;  
05 }  
06 $c = 0;  
07 call_user_func('a'$c);  
08 echo $c;//显示 1  
09 call_user_func_array('a'array($c));  
10 echo $c;//显示 2 
11 ?>

另外,call_user_func函数和call_user_func_array函数都支持引用。

01 <?php
02 function increment(&$var)
03 {
04     $var++;
05 }
06 $a = 0;
07 call_user_func('increment'$a);
08 echo $a// 0
09 call_user_func_array('increment'array(&$a)); // You can use this instead
10 echo $a// 1
11 ?>
来源:网络(0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值