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

来源:互联网 发布:ubuntu怎么移动文件夹 编辑:程序博客网 时间:2024/05/16 11:05

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

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

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

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

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

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

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

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

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

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

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

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

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

01<?php
02function increment(&$var)
03{
04    $var++;
05}
06$a = 0;
07call_user_func('increment'$a);
08echo $a// 0
09call_user_func_array('increment'array(&$a)); // You can use this instead
10echo $a// 1
11?>
来源:网络(0)
0 0
原创粉丝点击