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