動的に関数を実行したい事がよくあります。
javascriptだと配列(Object)のキーに関数を入れちゃえば簡単なのですが、
PHPだとよく解らなかったので調べました。(PHPの事はすぐ忘れる...)
まず、PHPには変数に入ってる文字列を関数として使う機能があり、
これを「可変関数 (variable functions)」と言うそうです。
これを覚えておけばググる時に困らない!
同時に、変数に入ってる文字列を変数名として使う機能は「可変変数」と言うそうです。
使い方。
<?php function myFunc( $arg = "" ) { echo "myFunc(); argument = '$arg' \n"; } $func = 'myFunc'; $func('test'); // 又は call_user_func($func, '俺だよ!');
CLASS内の関数を呼びたい時
<?php class Sakura { private $name = 'SAKURA'; function myFunc( $arg = "" ) { echo $this->name . "myFunc(); argument = '$arg' \n"; } } $func = 'myFunc'; // classインスタンスから呼び出す $mySakura = new Sakura(); $mySakura->$func( 'LOVE' ); // classインスタンスを作らずに呼び出す Sakura::$func( '好き好き大好き超愛してる。' ); // call_user_func_array() で呼び出す $mySakura = new Sakura(); call_user_func_array( array($mySakura, $func), array( 'おらだよ。オラオラ!' ) );
[参考]
PHP: 可変関数 - Manual
PHPでコールバック関数を利用する - Qiita
PHP5.3からは無名関数をコールバックで渡せるようになったっぽい!