メンバ変数func_nameに関数名を入れた際、$ClassName->func_name()みたいに呼びだそうとするとエラーになる。
call_user_func()を使えばいいらしい。
class C {
public $func_name;
public function __construct($func_name){
$this->func_name = $func_name;
}
}
function t(){
echo "t is called";
}
$a = new C("t");
#$a->funcname() # これは無理
call_user_func($a->func_name); # これで動く
参考: [PHP] クラスにおけるメンバ変数(プロパティ)内の関数オブジェクトとメソッドの性質:無名関数(クロージャ)について | Ouka Studio
コメント