2012-09-14 132 views
0

我需要獲取動態調用的函數名稱。動態獲取函數名稱

$myFunction = isset($somecondition) ? "function1(100,100)" : "function(300,300)"; 

然後我需要調用方法

$myclass->$myFunction; 

回答

1

您正在搜索的call_user_func_array方法

call_user_func_array(
    array($myClass, isset($somecondition) ? 'function1' : 'function'), 
    isset($somecondition) ? array(100, 100) : array(300, 300) 
); 

它不是可能命名一個函數函數,所以他的代碼有很多問題;)

+0

這是最接近的答案,但是一件小事情,'$ functionName'也基於$ someCondition而改變。最後,他可能會更好地做一個if語句,並根據這個參數調用任一函數。 –

-2

括號是missinng

$myclass->$myFunction(); 
2

你不能將函數調用存儲在一個像這樣的字符串中。您可以單獨存儲函數名稱和參數,但使用簡單的if語句並使用特定參數調用任一方法可能會更好。

if($someCondition){ 
    $myClass->function1(100, 100); 
} else { 
    $myClass->function(300, 300); 
} 

任何其他方式要麼在某個變量存儲函數名和參數,並使用user_call_func_array(),但你仍然需要一個if語句像上面或另一種選擇是使用兩個三元之類的語句在雷米的回答只是用另一個三元組在function1function之間切換。這個方法並不理想,因爲你正在處理兩個三元語句,而不是上面的if語句。