函数名必须是字符串

时间:2012-01-02 02:49:46

标签: php function object methods

当我尝试拨打$func('something')时,我收到此错误:

if(($object instanceof MyObject) && (method_exists($object, 'foo'))){
  $func = array(&$object, 'foo');

}else{
  $func = 'fallback_foo';
}

...

echo $func('something');

我的代码出了什么问题?

显然我不能将$ func作为一个字符串,因为它是一个特定于对象的方法... 但是一个方法名称和对象的数组应该可以正常工作吗?

1 个答案:

答案 0 :(得分:3)

使用call_user_func()call_user_func_array()。两者都支持常规函数和方法调用:

echo call_user_func($func, 'something');
echo call_user_func_array($func, array('something'));