.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 6
.
<< Prev
関数
« INDEX »
PHP 文法編
Next >>
オブジェクト指向(PHP4)
作成日:2006/05/10

1K.4 関数の間接呼び出し

1K.4.1 可変関数

 PHPには可変関数と呼ばれるものがあります。 可変関数は、コールバック、イベントハンドラ、関数テーブルなどの実装を容易にします。

尚、PHPには unset(), isset(), empty(), include(), echo(), print() のように一見関数風なものがありますが、 これらは言語構造として組み込まれているので、可変変数として使う事はできません。

 PHPは可変関数だけでなく、(オブジェクトの場合)可変メソッドも使用する事ができます。

構文:可変関数
$変数名( 引数リスト )
  • $変数名 の値が関数名になります。
  • $変数名 で関数を間接参照しています。可変変数($$変数名)との類似性に注目して下さい。

用例:
function hello($name1,$name2){ echo "Hello $name1 $name2.\n"; }

$func = 'hello';
$func("sun", "light");  // 'Hello sun light.'を表示


1K.4.2 関数による関数コール

構文:関数による関数コール
mixed call_user_func ( callback function [, mixed parameter [, mixed ...]] ) mixed call_user_func_array ( callback function [, array param_arr] )
  • 関数を使って関数を呼び出す事ができます。
  • 関数の引数を羅列する場合は call_user_func() を、配列で渡す場合は call_user_func_array() を使います。

用例:
function hello($name1,$name2){ echo "Hello $name1 $name2.\n"; }

call_user_func( "hello", "sun", "light");                // 'Hello sun light.'を表示
call_user_func_array( "hello", array("sun", "light") );  // 'Hello sun light.'を表示


1K.4.3 匿名関数

 create_function()関数を使って匿名関数を作る事ができます。 匿名関数は1回しか使用しない一時的なコールバック関数などに使用されます。

構文:匿名関数
create_function ( string args, string code )
  • create_function() はユニークな名前を返します。
  • args には、引数並びを文字列で指定し、code は関数本体のコードを文字列で記述します。
    ※ これらの引数は共に(変数展開を抑止するために)シングルクオートで括った文字列を使用する事が推奨されます。

用例:
$new_func = create_function('$name1,$name2','echo "Hello $name1 $name2.\n";');

$new_func("sun", "light");                   // 可変関数としてコール
call_user_func( $new_func, "sun", "light");  // call_user_func()関数を使ってコール
<< Prev
関数
« INDEX »>
Page Top
Next >>
オブジェクト指向(PHP4)

.