这是我的代码:
$method_name = 'mymethod()';
$obj = new Myclass();
$obj->$method_name;
如您所见,我已使用$method_name
作为方法的名称。但它会抛出此错误消息:
未定义的属性:app \ classes \ Myclass :: $ mymethod()
我该如何解决?
答案 0 :(得分:4)
您应该避免使用字符串进行反射...并使用ReflectionClass和ReflectionMethod。
然而,正确的做法是:
$method_name = 'mymethod';
$obj = new Myclass();
$obj->$method_name();
答案 1 :(得分:2)
您必须使用回调函数call_user_func
。为此,您需要创建一个数组:
第二个是方法
call_user_func
您也可以在没有$player->{'SayHi'}();
的情况下执行此操作:
$method = 'doIt';
$player->$method();
或者:
r
答案 2 :(得分:1)
您将方法名称设置为mymethod()
,即无效。
将其设置为mymethod
:
$method_name = 'mymethod';
$obj = new Myclass();
$obj->{$method_name}();