0

不太清楚如何更好地表达标题。

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

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

4

1 回答 1

1

您必须call_user_func_array 改用:

$obj = new Test();
call_user_func_array(array($obj, 'testing_cronjob'), $params);
于 2012-10-09T19:28:00.727 回答