1 //有一些函数,名字未知
2 //名字在运行状态时,才知道
3
4 //例如a(),b(),c()调用哪一个
5 // ->index(),reg()?又调用哪一个
6
7 function t(){
8 echo 'hello';
9 }
10
11 function s(){
12 echo 'world';
13 }
14
15 $a='t';
16 //$a();
17
18 //在php中,变量名可以是动态
19 //如
20 $str='name';
21 $name='lisi';
22 //echo $$str;//lisi $$str ->$($str)->$name
23
24 //函数名也可以是动态
25 $func='t';
26 //$func(); //hello
27
28 //类名和方法名也可以是动态
29 //$user->$action();
30
31 //call_user_func($func);//hello
32
33 //在php中,变量名,函数名,类名,方法名都是可变的
34 //因此,用可变方法名,和call_user_func能够达到同样的目的.
35
36 echo '<hr/>';
37
38 class a{
39 public function b(){
40 echo 'ab';
41 }
42 }
43
44 $m='a';
45 $a='b';
46 //动态调用 a类下的b方法
47 //$z=new $m();
48 //$z->$a();
49 //但是上面那样写很怪异
50
51 //可以利用call_user_func函数实现上面同样效果
52 call_user_func(array(&$m,$a));
53
54
55 //实际例子2
56 //call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
57 function a($b,$c){
58 echo $b;
59 echo $c;
60 }
61 call_user_func('a', "111","222");
62 call_user_func('a', "333","444");
63 //显示 111 222 333 444
64
65 //调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
66 class a{
67 function b($c){
68 echo $c;
69 }
70 }
71 call_user_func(array("a","b"),"111"); //显示111
72
73 //call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
74 function a($b,$c){
75 echo $b;
76 echo $c;
77 }
78 call_user_func_array('a', array("111", "222"));//显示 111 222
转载于:https://www.cnblogs.com/loveyouyou616/archive/2012/12/07/2806602.html