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
 
  
コメント