【问题标题】:PHP: Call method with array?PHP:用数组调用方法?
【发布时间】:2012-09-30 04:41:22
【问题描述】:

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

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

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

【问题讨论】:

标签: php arrays methods callback call


【解决方案1】:

您必须改用call_user_func_array

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

【讨论】:

  • 哦,你一定是 F@*&/#G 在开玩笑吧!我坐在这里,花了几个小时试图解决这个问题,只是在这里写一个问题并被告知我只需要在函数名称的末尾附加 6 个小单词,瞧,它有效!非常感谢!
  • 次要的挑剔:始终阅读整个手册页以了解您遇到问题的 PHP 函数。 call_user_func 页面底部包含指向call_user_func_array 的链接(“另请参阅:”)
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 2013-03-08
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多