数组到字符串转换 - 变量函数名称调用

时间:2016-05-21 08:31:45

标签: php oop

我需要在类中调用一些函数;基于变量,如下所示:

$x->$y();

但是,我发现了一个奇怪的行为,请考虑以下示例代码:

$arr = array(

    "some_index" => "func_name"
);


$str = "func_name";

class some_class {

    public function func_name() {

        echo "It works in class!";
    }
}

$some_obj = new some_class();

$some_obj->$arr['some_index']();
$some_obj->$str();

现在行

$some_obj->$arr['some_index']();

给出错误:

  

数组到字符串转换...
  未定义的属性:some_class :: $ Array in ...
  未捕获错误:函数名称必须是...中的字符串

但是,行

$some_obj->$str();

完美无缺。

此外,如果函数未在类中定义,则两行都可以使用。

任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

你应该这样称呼它:

$some_obj->{$arr['some_index']}();

here's a living example