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()
?>