我需要在类中调用一些函数;基于变量,如下所示:
$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();
完美无缺。
此外,如果函数未在类中定义,则两行都可以使用。
任何人都知道为什么会这样?