定义
如果一个变量后面有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它。
可变函数可以用来实现包括回调函数,函数表在内的一些用途。
可变函数不能用于例如echo
,print
,unset()
,isset()
,empty()
,include
,require
以及类似的语言结构,需要使用自己的包装函数来将这些结构用作可变函数。
示例一:可变函数调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php function foo() { echo "In foo()<br />\n"; }
function bar($arg = '') { echo "In bar(); argument was '$arg'.<br />\n"; }
function echoit($string) { echo $string; }
$func = 'foo'; $func();
$func = 'bar'; $func('test');
$func = 'echoit'; $func('test'); ?>
|
示例二:调用一个对象方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php class Foo{ function Variable(){ $name = 'Bar'; $this -> $name(); }
function Bar(){ echo 'This is Bar.'; } }
$foo = new Foo(); $funcname = 'Variable'; $foo -> $funcname(); ?>
|
示例三:函数调用比静态属性优先
1 2 3 4 5 6 7 8 9 10 11 12
| <?php class Test{ static $variable = 'static properly'; static function Variable(){ echo 'Method Variable called.'; } }
echo Test::$variable; $variable = "Variable"; Test::$variable(); ?>
|