不太确定如何更好地说出标题。
我需要做的是使用call_user_func调用方法。我正在调用的方法接受几个不同的变量(var1,var2,var3等),而不是数组。问题是,当调用函数时我需要传递数组我有单独的变量到方法。让我告诉你。
这是我的方法:
class Test {
public function testing_cronjob($p1, $p2, $p3, $p4, $p5) {
echo 'p1 = ' . $p1 . '<br />';
echo 'p1 = ' . $p2 . '<br />';
echo 'p1 = ' . $p3 . '<br />';
echo 'p1 = ' . $p4 . '<br />';
echo 'p1 = ' . $p5 . '<br />';
}
}
以下是我目前(尝试)称之为:
$obj = new Test();
call_user_func(array($obj, 'testing_cronjob'), $params);
该方法运行,但它只获得一个变量,这不是我想要的。
$ params看起来像这样:
$params = array(
0 => 'first one',
1 => 'second one',
2 => 'third param!',
3 => 'oh and im fourth!!',
4 => 'im last, fml! :('
)
我让自己陷入这种状况的方式,是因为我正在创建一个cronjob模型。它接受参数以及类和方法名称。它全部存储在数据库中,当它运行时,我需要能够按预期将$ params发送到该方法。
我无法重写方法如何接受变量,因为这样做太多了。我将从cronjob中调用几个(10+)方法,所有方法都在应用程序中使用得很好。我也不确定如何重写它,但如果您对此有任何建议,请告诉我。
另外,如果重要的话,我正在使用codeigniter。如果我忘记提及任何内容或者您想要更多代码,请发表评论。
这可能吗?有没有解决方法?欢迎任何建议!
答案 0 :(得分:1)
您必须改为使用call_user_func_array
:
$obj = new Test();
call_user_func_array(array($obj, 'testing_cronjob'), $params);