可変関数

PHP は可変関数(variable functions)の概念をサポートします。 これにより、変数名の後に括弧が付いている場合、その値が何であろうと PHPは、同名の関数を探し実行を試みます。 この機能は、コールバック、関数テーブル等を実装するために使用可能です。

可変関数は、 echo() , unset() , isset() , empty() , include() , print() のような言語構造と組み合わせて使用する ことはできません。これらの言語構造を可変変数として使うには 独自のラッパ関数を使う必要があります。

例 17-14. 可変関数の例

<?php
function foo ()
{
    echo
"In foo()<br />\n" ;
}

function
bar ( $arg = '' )
{
    echo
"In bar(); argument was '$arg'.<br /> \n " ;
}

// This is a wrapper function around 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()
?>

オブジェクトのメソッドを可変関数を使ってコールすることもできます。

例 17-15. 可変メソッドの例

<?php
class Foo
{
    function
Variable ()
    {
        
$name = 'Bar' ;
        
$this -> $name (); // Bar() メソッドのコール
    
}
    
    function
Bar ()
    {
        echo
"This is Bar" ;
    }
}

$foo = new Foo ();
$funcname = "Variable" ;
$foo -> $funcname ();   // $foo->Variable() をコールする

?>

可変変数 function_exists() も参照してください。