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()も参照してください。