PHP可变函数的使用详解

  PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

  变量函数不能用于语言结构,例如 echo() ,print() ,unset() ,isset() ,empty() ,include() ,require() 以及类似的语句。需要使用自己的包装函数来将这些结构用作变量函数。

  Example #1 可变函数示例

  

复制代码 代码如下:

  <?php

  function  foo () {

  echo  "In foo()<br />/n" ;

  }

  function  bar ( $arg  =  '' ) {

  echo  "In bar(); argument was ' $arg '.<br />/n" ;

  }

  // 使用 echo 的包装函数

  function  echoit ( $string )

  {

  echo  $string ;

  }

  $func  =  'foo' ;

  $func ();         // This calls foo()

  $func  =  'bar' ;

  $func ( 'test' );   // This calls bar()

  $func  =  'echoit' ;

  $func ( 'test' );   // This calls echoit()

  ?>

  还可以利用可变函数的特性来调用一个对象的方法。

  Example #2 可变方法范例

  

复制代码 代码如下:

  <?php

  class  Foo

  {

  function  Variable ()

  {

  $name  =  'Bar' ;

  $this -> $name ();  // This calls the Bar() method

  }

  function  Bar ()

  {

  echo  "This is Bar" ;

  }

  }

  $foo  = new  Foo ();

  $funcname  =  "Variable" ;

  $foo -> $funcname ();    // This calls $foo->Variable()

  ?>