【问题标题】:Function name must be a string函数名必须是字符串
【发布时间】:2012-01-31 14:15:02
【问题描述】:

当我尝试调用 $func('something') 时出现此错误:

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

}else{
  $func = 'fallback_foo';
}

...

echo $func('something');

我的代码有什么问题?

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

【问题讨论】:

  • $func('something') 应该做什么?
  • 它应该运行函数/方法:)
  • 我不认为,你想要达到的目标是这样的
  • 我想指出,这个问题自 PHP 5.4.0 起已修复:Added indirect method call through array.

标签: php function object methods


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多