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