2016-02-25 50 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 –