2016-02-25 39 views
0

好吧,讓我們說,我有100個呼叫「form_input」功能。這些電話包括文本(70)和上傳(30)。調用內置的CodeIgniter功能

我上傳之前很簡單。現在我改變一下並添加:圖像預覽和文件名預覽。但我不想改變所有的地方(30),我可以,這很容易,但我現在不想要。

我不想變「芯」的文件,如果是這樣,我更喜歡使用其他名稱的功能。

form_input($p1, $p2, $p3){ 
    if($p1['type']=='file'){ 
     //do my lovely upload 
    }else{ 
     //call built-in form_input (this is not a recursive call) 
     form_input($p1, $p2, $p3); 
    } 
} 
+0

你能簡單地命名版本'form_input_custom()'? – MonkeyZeus

+0

是的,我知道這是一種方式,但我需要知道如何使用相同的名稱,當然如果可能的話。 – lcssanches

+0

您需要將其命名空間,將其放入它自己的類中,並根據需要調用'class-> function()',或覆蓋原始文件並創建處理上載的其他代碼。 – MonkeyZeus

回答

0

有多種方法可以做到這一點。

  1. 讓它成爲一個類。使用自定義表單功能創建一個新類,並在需要時將其實例化。雖然CodeIgniter中的助手應該是無類的,但這會很好地工作,並更好地組織您的代碼。例如,

    class CustomFormHelper { 
        function form_input() { 
         // your code 
        } 
    } 
    $form_helper = new CustomFormHelper(); 
    $form_helper->form_input(); 
    
  2. 更改函數名稱。作爲一個評論者說,只是改變函數名稱,它應該是一個快速修復。

  3. 做一個多功能。 這不是最乾淨的解決方案但如果你想統一這兩個,這應該做的伎倆。

    function form_input_unified($fn, $args) { 
        if ($fn == 1) { 
         // execute original... 
        } elseif ($fn == 2) { 
         // do it new way. 
        } 
    } 
    
+0

Original form_helper不是一個類 – lcssanches

+0

@icssanches是的,但是你可以用你自己的函數創建一個獨立的類。也許問題不清楚,你想達到什麼目的? –

+0

@icssanches我添加了多功能選項編輯:我想我可能是現在得到它,你的意思是檢查輸入是一個文件,如果是執行新的功能,在這種情況下,因爲你不能在運行時修改功能PHP,你可能需要編輯處理這一核心文件(不乾淨的選擇,但好像它什麼被要求)https://github.com/bcit-ci/CodeIgniter/blob/477e08f1d6726809660e4841f389493541f7bc07/system/helpers/form_helper .php –