转载

PHP 可变函数

php 可变函数

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

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

Example #1 可变函数示例

  1. <?php 
  2. function foo () { 
  3. echo "In foo()<br />/n" ; 
  4.  
  5. function bar ( $arg = '' ) { 
  6. echo "In bar(); argument was ' $arg '.<br />/n" ; 
  7.  
  8. // 使用 echo 的包装函数 
  9. function echoit ( $string ) 
  10. echo $string ; 
  11.  
  12. $func = 'foo' ; 
  13. $func (); // This calls foo() 
  14.  
  15. $func = 'bar' ; 
  16. $func ( 'test' ); // This calls bar() 
  17.  
  18. $func = 'echoit' ; 
  19. $func ( 'test' ); // This calls echoit() 
  20. ?>  

也可以用可变函数的语法来调用一个对象的方法。

Example #2 可变方法范例

  1. <?php 
  2. class Foo 
  3. function Variable () 
  4. $name = 'Bar' ; 
  5. $this -> $name (); // This calls the Bar() method 
  6.  
  7. function Bar () 
  8. echo "This is Bar" ; 
  9.  
  10. $foo = new Foo (); 
  11. $funcname = "Variable" ; 
  12. $foo -> $funcname (); // This calls $foo->Variable() 
  13.  
  14. ?>  

当调用静态方法时,函数调用要比静态属性优先:

Example #3 Variable 方法和静态属性示例:

  1. <?php 
  2. class Foo 
  3. static $variable = 'static property' ; 
  4. static function Variable () 
  5. echo 'Method Variable called' ; 
  6.  
  7. echo Foo :: $variable ; // This prints 'static property'. It does need a $variable in this scope. 
  8. $variable = "Variable" ; 
  9. Foo :: $variable (); // This calls $foo->Variable() reading $variable in this scope. 
  10.  
  11. ?> 
正文到此结束
Loading...