美文网首页
6.2 可变函数

6.2 可变函数

作者: 57fc17b7d598 | 来源:发表于2017-06-23 14:29 被阅读51次

    可变函数的意思类似可变变量,指的是函数调用时,该函数的名字可以是一个变量,PHP会自动根据该变量的值去寻找同名的函数,以达到杂技般的效果。

    但有一些内置的语言结构不能使用可变函数,如echo等很多类似的系统内置函数或语言结构。

    // 定义函数
    function foo(){
        echo 1;
    }
    function bar(int $num){
        echo $num;
    }
    
    // 定义变量
    $fn1 = "foo";
    // 输出 1
    $fn1();
    
    // 定义变量
    $fn2 = "bar";
    // 输出 2
    $fn2(2);
    
    // 花式调用、输出 1
    "foo"();
    

    对于类的方法也可以使用可变函数调用:

    // 定义类
    class Example{
        function foo(){
            echo 1;
        }
        static function bar(int $num){
            echo $num;
        }
    }
    // 实例化
    $exam = new Example();
    
    // 输出 1
    $fn1 = "foo";
    $exam->$fn1();
    
    // 输出 2
    $fn2 = "bar";
    Example::$fn2(2);
    
    // 花式调用 输出 1
    $exam->{"foo"}();
    
    // 花式调用 输出 2
    Example::{"bar"}(2);
    

    可变函数的变量也可以是 callable 类型:

    // 定义类
    class Example{
        function foo(){
            echo 1;
        }
        static function bar(){
            echo 2;
        }
    }
    
    // 输出 1
    $fn1 = [new Example(), "foo"];
    $fn1();
    
    // 输出 2
    $fn2 = ["Example", "bar"];
    $fn2();
    
    // 输出 2
    $fn2 = "Example::bar";
    $fn2();
    

    相关文章

      网友评论

          本文标题:6.2 可变函数

          本文链接:https://www.haomeiwen.com/subject/plsccxtx.html