2012-10-09 61 views
0

不太確定如何更好地標題。PHP:調用數組的方法?

我需要做的就是用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

http://php.net/manual/en/function.call-user-func-array.php – bfavaretto

回答

1

你必須使用call_user_func_array代替:

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

哦,你得爲F @ * &/#G跟我開玩笑吧!在這裏,我坐下來花幾個小時試圖解決這個問題,只是在這裏寫一個問題,並得到告訴,我只需要在函數名的末尾添加6個小小的單詞,瞧,它的工作原理!謝謝一堆! – qwerty

+0

小問題:總是閱讀您遇到問題的PHP函數的整個手冊頁。 'call_user_func'上的頁面在底部包含一個到'call_user_func_array'的鏈接(「另見:」) – bfavaretto

+0

真的很好的建議。 – qwerty