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