6.2 可变函数

2017-06-23  本文已影响51人  57fc17b7d598

可变函数的意思类似可变变量,指的是函数调用时,该函数的名字可以是一个变量,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();
上一篇 下一篇

猜你喜欢

热点阅读