2011-05-20 40 views
1

如何使用動態參數調用來創建真正的動態函數?我發現的文檔和例子都假設你只有一個參數。我想有多個參數,例如:來自字符串的PHP函數參數

class Object { 
    function A($p1) {} 
    function B($p1,$p2) {} 
} 

$obj = new Object(); 
$function = "B"; 
$params = "'foo', 'me'"; 

$obj->$function($params); 

調用$function = "A"將罰款作爲$ params爲視爲字符串。我試過

$obj->$function(explode(',',$params)); 

$function="B"但爆炸只返回 一個數組,因此函數B具有丟失參數不工作。

有什麼想法?

+0

你爲什麼要這麼做? – Fosco 2011-05-20 17:41:40

+0

對於我的用法,我在寫一個模型加載器。它使我們能夠加載任何模型並執行它,而無需在代碼中指定特定的模型。類似於Java的依賴注入。 – cfoo 2011-05-20 20:07:36

回答

3

您將需要使用call_user_func_arraystr_getcsv

call_user_func_array(array($obj, "B"), str_getcsv($params)); 
+1

對於'str_getcsv' +1。 – Nick 2011-05-20 17:53:34

+0

謝謝Jacob!這正是我需要的。 – cfoo 2011-05-20 19:59:34

+1

@cfoo接受答案非常重要,因爲它可以獎勵解決問題的海報,並告訴其他人您的問題已得到解決。有關更多信息,請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Nick 2011-05-20 21:09:39