将大型控制器方法拆分为文件

问题描述:

我的代码远离DRY,它需要重构,但暂时我需要将其拆分为文件 - 我有一个300行控制器方法,可以在调用时执行大量的api工作,而我只是想将一些代码放到另一个文件中,这样我就可以更好地阅读它,而无需重新编写它。将大型控制器方法拆分为文件

if($type == "like"){ 

    $this->load->helper('posts/likes'); 

}else{ 

    $this->load->helper('posts/pic'); 

} 

我尝试了上面的方法,但它像一个正常的处理它(你会相信它) -

基本上我想将代码复制并粘贴到另一个文件小幅它清理干净,但新文件应该只是当前方法的扩展。我不用什么来使用PHP函数(require_once或类似)..可以不这样做?

澄清

我有一个非常大的控制器和方法 - 代替具有在一个方法400行的代码我想它在两个文件中分割,并让代码驻留在那里。如果条件通过一个文件将加载到控制器而不是另一个 -

回答我的问题如何通过发布有关DRY类方法加载文件没有帮助我的情况 - 代码应该清理 - 重构和分类到库,我知道这一点,但我需要一个临时修复

我的回答

此修复程序是在代码疙瘩到控制器目录我的帖子控制器我把两个文件中的职位子文件夹的子文件夹然后使用require_once-哪些工作,但我认为ci可能有太多的东西来加载代码块。

+0

你能澄清你的问题吗?我不确定你想要做什么? – Catfish

+0

只是为了澄清,我没有得到反对票:P – ajreal

+0

如果你想要你可以把上面的代码写成一个简单的代码:'$ this-> load-> helper(“posts /”。(($ type ==“ like“)”“likes”:“pic”));':) – uzsolt

一般规则是保持控制器苗条。
干燥是你需要认真对待并获取它的东西。

我一般会准备控制器调用一个模型的方法,
该模型方法做准备,并在正确的格式所需的所有数据返回到控制器的方法

这样,就可以避免结果的循环in controller

$result = $this->some_source->get_comments($limit=30); 
// I don't do loop in controller 
$this->load->view("display", $result); 

class some_source extends xxx 
{ 
    function get_comments(...) 
    { 
    // get results 
    // loop 
    // do necessary massage/format 
    // and return 
    } 
} 
+0

这个问题是关于使用单独的文件中的PHP-不是关于DRY代码 –

+0

如果你不干,你必须分裂! – ajreal

+0

你可能会发现我废话,如果不适合你的口味,就跳过这个。 – ajreal