看板 PHP 關於我們 聯絡資訊
你應該用的是template pattern,而不是把interface破壞掉。 以下是php5合法的寫法 function register($functor){ $num_args = func_num_args(); for ($i = 0; $i < $num_args; $i ++) { $parameter = func_get_arg($i); if (isset($_REQUEST[$parameter])) { global $$parameter; $$parameter = $functor($_REQUEST[$parameter]); } } } function functor_int($arg){ ...... } function functor_string($arg){ ...... } function functor_array($arg){ ....... } 呼叫就用 register(1, 'functor_int'); register('aaa', 'functor_string'); ..... ※ 引述《gsklee ()》之銘言: : 我有三個functions如下: : 因為很明顯的可以看到大部分的程式碼都是重複的, : 所以我想把它們整併成單一一個程式碼區塊, : 但是卻不得其解。 : 我有試過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: 60.250.147.33