PHPでは変数に関数名を設定し、その変数の後に括弧(())を付けることで、変数に設定された関数を実行します。 これは、似た様な関数を作成した時に、何かの条件で関数の実行振り分ける時に使えるかと思います。
以下の例では、2個の関数を宣言し、関数名の配列を宣言し、繰り返し処理でそれぞれの関数を実行しています。
<?php
//最初の関数宣言
function func1() {
echo "func1......<br>";
}
//2番目の関数宣言
function func2() {
echo "func2******<br>";
}
//関数名を配列に設定
$arr = array("func1", "func2");
//配列を順次処理する
foreach ($arr as $strFuncName) {
//関数を実行
$strFuncName();
}
?>
結果は以下の表示になります。
func1...... func2******
それぞれの関数が実行されたことが分かります。
可変関数の方法をクラスにも適用できます。 可変関数の様に別名のクラスを用意し、同じメソッドを持たせてみます。
<?php
//最初のクラス宣言(メソッド1個のみ)
class test1 {
function hello() {
echo "test1 : hello<br>";
}
}
//2番目のクラス宣言
class test2 {
function hello() {
echo "test2 : hello<br>";
}
}
//クラス名を配列に設定
$arrClass = array("test1", "test2");
//配列を順次処理する
foreach ($arrClass as $strClassName) {
//クラス生成
$test = new $strClassName;
//メソッド呼び出し
$test->hello();
//クラスのインスタンス廃棄
unset($test);
}
?>
この結果は以下の様に、クラスが順次生成され、「hello」メソッドが呼び出されることが分かります。
test1 : hello test2 : hello
PR
コメント