[PHP] 文字列でクラス内の関数を指定して実行する可変関数

[PHP] 文字列でクラス内の関数を指定して実行する可変関数

可変関数

PHP は可変関数(variable functions)の概念をサポートします。 これにより、変数名の後に括弧が付いている場合、その値が何であろうと PHPは、同名の関数を探し実行を試みます。 この機能は、コールバック、関数テーブル等を実装するために使用可能です。

可変関数を使うことで、文字列で指定した関数を実行できます。

function hello($name) {
    echo "Hello $name !";
}

// hello("太郎");

'hello'("太郎");

$func = 'hello';
$func("次郎");

クラス内の関数も文字列で実行できる

クラス内で定義されている関数についても同じように可変関数で実行できます。便利です。

// 関数名を変数に入れる
$func = 'func';

// インスタンスから関数実行
$cls = new MyClass();
$cls->$func();

// こんな実行もできる
MyClass::$func();

For文でまとめて実行

関数 func1func5 まで定義されており、まとめて実行したいけど動的に範囲指定したい、みたいなときにはループでいい感じに書けます。

function func1() {
    echo 'func1';
}

function func2() {
    echo 'func2';
}

function func3() {
    echo 'func3';
}

function func4() {
    echo 'func4';
}

function func5() {
    echo 'func5';
}

for ($i = 1; $i <= 5; $i++) {
     $func = "func$i";
     $func();
}

以上。

PHPカテゴリの最新記事