我將所有調用傳遞給主映射函數 然後它應該根據字符串動態調用其他函數(直到這部分,事情很簡單) 問題是我想傳遞參數到第二個功能,這些參數可能會有所不同。 下面給出(不應該改變):動態函數參數
function test1($x){
echo $x;
}
function test2($x, $y){
echo $x * $y;
}
,現在又映射函數
function mapping ($str){
switch ($str){
case 'name1':
$fn_name = 'test1';
$var = 5;
break;
case 'name2':
$fn_name = 'test2';
$var = 5;
break;
}
$this->{$fn_name}($var);
}
然後這將運行映射:
$this->mapping('name1');
$this->mapping('name2'); // This one will crash as it need two variables
當然的了上面的內容被簡化爲關注問題而不是代碼的目的。 問題是當函數有多個參數時(這很容易發生)。 我期待有開關的情況下,並根據如何填寫案例參數,行 $this->{$fn_name}($var);
應該工作。
能否請您告知或給我點子,知道函數(test1,test2)結構不能改變。我不能突然開始使用func_get_args()
或func_get_arg()
你的建議是偉大的 累了,它工作正常。 但在php.net中探索後,如果找到call_user_func_array() ,它完美地解決了我的問題,但我仍然欠你一切:) – bhefny 2010-11-01 18:08:49
FYI - ReflectionFunction不會在類方法上工作 - 實例或靜態 – phirschybar 2012-04-15 21:13:17