PHPでは変数をそのまま関数のように呼び出すことが出来ます
<?php
$str = "hogehoge";
$str("TEST"); // hogehoge 関数が呼ばれ、TEST が出力される。
function hogehoge($str){
echo $str;
}
?>
CGIの入力値などを使ってこの可変関数を使うのは非常に危険ですが、
使い方によっては非常に柔軟で便利なことが出来ると思います。
(プラグイン開発やフレームワークなどに)
<?php
if (function_exists("関数名")) {
// 可変関数の実行
}
?>
で関数が存在するかチェックできますので、呼び出す前にこれを実行してチェックしましょう。
同じように、
call_user_funcという関数を使って、call_user_func("hogehoge","TEST"); のように呼び出すことも可能です。
引数が2つ以上になる場合は、
call_user_func("hogehoge","TEST","TEST2");
のようにします。
call_user_func_array という関数を使えば、複数の引数を配列で渡すことが出来ます。
call_user_func_array("hogehoge",array("TEST","TEST2"));
call_user_func_array の方が、配列で渡せるので、call_user_func より柔軟に使うことが出来そうです。
以降の章で説明するオブジェクトのオブジェクトのメソッドを呼ぶには
call_user_method、call_user_method_array を使います。
スポンサードリンク
もどる