zoukankan      html  css  js  c++  java
  • call_user_func用法

    
    
     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
    
    
    
     
  • 相关阅读:
    【思考题】任意长度有理数乘法运算
    【排序】表插入排序算法(C语言版)
    JAVA中的反射
    JAVA中关于日期的最常见的操作
    Hibernate:基于HQL实现数据查询
    Hibernate与Mybatis对比
    使用idea实现SSM框架整合
    基于maven搭建hibernate运行环境
    MYSQL中的存储过程
    MySQL 索引
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/2806602.html
Copyright © 2011-2022 走看看