PHP:使用数组调用方法?

时间:2012-10-09 19:25:54

标签: php arrays methods callback call

不太确定如何更好地说出标题。

我需要做的是使用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。如果我忘记提及任何内容或者您想要更多代码,请发表评论。

这可能吗?有没有解决方法?欢迎任何建议!

1 个答案:

答案 0 :(得分:1)

您必须改为使用call_user_func_array

$obj = new Test();
call_user_func_array(array($obj, 'testing_cronjob'), $params);