我需要在函数内调用一个方法,所以我必须将它作为一个数组传递给它:
array($this, 'display_page');
但我需要传递参数。这可能吗?
编辑 - 新方法 - 仍无效。
我现在尝试传递一个匿名函数,代替数组回调。
function(){MyClass::display_page($display);}
并编辑了这个功能:
class MyClass{
static function display_page($arg = false)
{
if($arg){
echo $arg;
} else {
echo "Nothing to report!";
}
}
}
但我得到的只是无需报告!
编辑问题在于在Wordpress中使用回调的方式(不认为它是相关的,原来是这样)。投票结束了。
答案 0 :(得分:0)
如果您查看call_user_func,可以看到它有第二个名为parameter的可选参数。
mixed call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )
使用它。
或者你可以像the comment on call_user_func
中提到的那样肮脏$method_name = "AMethodName";
$obj = new ClassName();
$obj->{$method_name}();
答案 1 :(得分:0)
沿着这些方向可能会有:
class Foo {
public function callMe() {
$args = func_get_args();
var_dump($args);
}
public function getCallback() {
$that = $this;
return function ($oneMoreArg) use ($that) {
$that->callMe(1, 2, $oneMoreArg);
};
}
}
$foo = new Foo;
$callback = $foo->getCallback();
$callback(3);
如果您没有运行PHP 5.3,那么您可以做的最好的事情可能是返回“自定义回调数组”和“自定义调用它”:
$callback = array($this, 'callMe', 1, 2);
$args = array_splice($callback, 2);
$args[] = 3;
call_user_func_array($callback, $args);