Variable Function in Function Definition?

看板PHP作者時間16年前 (2009/12/11 16:21), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我有三個functions如下: function int_register() { $num_args = func_num_args(); for ($i = 0; $i < $num_args; $i ++) { $parameter = func_get_arg($i); if (isset($_REQUEST[$parameter])) { global $$parameter; $$parameter = intval($_REQUEST[$parameter]); } } } function string_register() { $num_args = func_num_args(); for ($i = 0; $i < $num_args; $i ++) { $parameter = func_get_arg($i); if (isset($_REQUEST[$parameter])) { global $$parameter; $$parameter = trim(escape_string(htmlentities($_REQUEST[$parameter]))); } } } function array_register() { $num_args = func_num_args(); for ($i = 0; $i < $num_args; $i ++) { $array = func_get_arg($i); if (isset($_REQUEST[$array])) { $process = ""; foreach ($_REQUEST[$array] as $rip) { $process[] = trim(escape_string(htmlentities($rip))); } global $$array; $$array = array(); foreach ($process as $parameter) { array_push($$array, $parameter); } } } } 因為很明顯的可以看到大部分的程式碼都是重複的, 所以我想把它們整併成單一一個程式碼區塊, 但是卻不得其解。 我有試過variable function的概念, 但似乎無法應用在這個情況下: $lolz = array('int_register', 'string_register', 'array_register'); foreach ($lolz as $lol) { function $lol() { [DEFINITIONS] } } 我知道如果改寫成這樣的話事情會變得很簡單: function register($flag) { switch ($flag) { case "int": [DEFINITION] } } 但是基於既定coding style的理由沒有辦法優先考慮以上選項, 所以想請教一下各位, 不知是否還有其他寫法, 可以達成簡併這三段程式碼的目標呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.235

12/11 16:40, , 1F
DON'T do it.
12/11 16:40, 1F
文章代碼(AID): #1B8W3k2N (PHP)
文章代碼(AID): #1B8W3k2N (PHP)