如何使用变量作为对象方法的名称?

时间:2016-12-12 12:27:07

标签: php oop syntax

这是我的代码:

$method_name = 'mymethod()';
$obj = new Myclass();
$obj->$method_name;

如您所见,我已使用$method_name作为方法的名称。但它会抛出此错误消息:

  

未定义的属性:app \ classes \ Myclass :: $ mymethod()

我该如何解决?

3 个答案:

答案 0 :(得分:4)

您应该避免使用字符串进行反射...并使用ReflectionClassReflectionMethod

然而,正确的做法是:

$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}();