在PHP中传递带有参数的回调

时间:2014-01-16 01:18:38

标签: php callback

我有一个PHP库函数,期望一个没有参数的回调。 我知道我可以使用array($this , 'my_function_name')传递对象的方法但是如何为my_function_name提供参数? 我找到了使用create_function的解决方案,但是从PHP手册中我发现它存在安全问题。

2 个答案:

答案 0 :(得分:5)

$that = $this;

$wrapper = function() use($that) {
    return $that->my_function_name('arg1', 'arg2');
};

答案 1 :(得分:0)

这取决于您的库函数启动回调方法。你提到你正在制作一个wordpress主题。 WP通常使用call_user_func方法。在库函数中,使用此函数调用args调用,在调用时包装方法参数:

回调定义:

$callbackArg = "Got here";
defined_lib_func(array($this , 'my_function_name'), $callbackArg);

图书馆脚本:

function defined_lib_function($callback, $args) {
  call_user_func($callback, $args);
}

对于多个参数,只需将它们作为数组传递,并定义您的回调方法以接受数组作为参数。