如:
我現在有三個方法
foo($a,$b=null)boo($a=array(),$b="")Roo($a)
現在我只需要傳遞方法名稱和參數列表就能直接調用方法。
希望是可以這樣(虛擬碼):
function run_function($fun_name,$paras){ {$fun_name}(....//這裡應該怎麼寫呢?);}
自己找到正確答案了,謝謝下面兩個回複的,但真不是我需要的答案。現貼出解決方案:
$handler = array( 'test', 'test3');$params = array( array(1,2,3,4), 1);if($params == null){ call_user_func($handler);}if (is_callable($handler) ){ call_user_func_array( $handler , $params );}class test{ function test1($arr,$arr1) { var_dump(array_merge($arr,$arr1)); } function test2() { echo 123; } function test3($arr,$a) { var_dump($arr); var_dump($a); }}
回複內容:
如:
我現在有三個方法
foo($a,$b=null)boo($a=array(),$b="")Roo($a)
現在我只需要傳遞方法名稱和參數列表就能直接調用方法。
希望是可以這樣(虛擬碼):
function run_function($fun_name,$paras){ {$fun_name}(....//這裡應該怎麼寫呢?);}
自己找到正確答案了,謝謝下面兩個回複的,但真不是我需要的答案。現貼出解決方案:
$handler = array( 'test', 'test3');$params = array( array(1,2,3,4), 1);if($params == null){ call_user_func($handler);}if (is_callable($handler) ){ call_user_func_array( $handler , $params );}class test{ function test1($arr,$arr1) { var_dump(array_merge($arr,$arr1)); } function test2() { echo 123; } function test3($arr,$a) { var_dump($arr); var_dump($a); }}
http://www.php.net/manual/zh/function.func-get-args.php
function run_function($fun_name){ if(function_exists($fun_name)) { $num = func_num_args(); $args = func_get_args(); array_shift($args); return $num==1 ? call_user_func($fun_name) : call_user_func_array($fun_name,$args); } trigger_error('Call to undefined function ' . $fun_name, E_USER_ERROR);}//使用run_function('foo', $a, $b);run_function('boo', $a, $b);run_function('Roo', $a);
被忽略的回答可以實現阿 真是醉了