zoukankan      html  css  js  c++  java
  • php中动态调用函数call_user_func

    php中可使用call_user_func进行方法的动态调用,可以动态调用普通函数、类方法以及带参数的类方法
    1. 定义一个普通函数getCurrentDate,用于获取今天日期。
    call_user_func带上的参数为要被调用的函数名

    fucntion getCurrentDate(){
      echo 'getCurrentDate:' . date('Y-m-d');
    }
    call_user_func('getCurrentDate');

    程序会自动执行getCurrentDate函数并获得期望的结果
    getCurrentDate:2017-08-18

    2.定义一个类Test及类方法getS,call_user_func的输入参数变为一个数组,数组第一个元素为对象名、第二个元素为类方法名。
    class Test
    {    
        static public function getS()
        {
            echo "123";
        }
    }
    call_user_func(array('Test','getS'));

    ※ 注意:如果不加static,数据会出现,但是有可能会报错,例如:

    3.也可调用带参数的函数方法,此时将getA方法改为getA($a,$b).

    function getA($a,$b)
    {
        echo $a+$b;
    }
    call_user_func('getA','1','2');

    4.调用类中带参数的方法,此时将getS方法改为getS($a,$b,$c)

    class Test
    {
        static public function getS($a,$b,$c)
        {
            echo $a + $b+$c;
        }
    }
    call_user_func(array('Test','getS'),'123','123','123');

    ※ 如3 、4中,如果自动调用一个函数或者类中的方法,并且传递参数,只需在函数内加参数就行,传几个加几个;但是这样很乱,也可以写成:↓

    1)多参数自动调用函数:

    function getA($a,$b,$c)
    {
        echo $a+$b+$c;
    }
    call_user_func_array('getA') , array('123','123','123') );

    2)多参数自动调用类中方法

    class Test
    {
        static public function getS($a,$b,$c)
        {
            echo $a + $b+$c;
        }
    }
    call_user_func_array( array('Test','getS') , array('123','123','123') );

  • 相关阅读:
    ●BZOJ 2669 [cqoi2012]局部极小值
    ●HDU 6021 MG loves string
    试试数学公式~
    ●BZOJ 3622 已经没有什么好害怕的了
    ●BZOJ 2560 串珠子
    ●BZOJ 4361 isn
    ●BZOJ 2393 Cirno的完美算数教室
    ●BZOJ 1042 [HAOI2008]硬币购物
    ●BZOJ 2839 集合计数
    【LG2481】[SDOI2011]拦截导弹
  • 原文地址:https://www.cnblogs.com/lpblogs/p/7389372.html
Copyright © 2011-2022 走看看