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

时间:2011-12-13 16:19:30

标签: php codeigniter

我的代码远离DRY并且它需要重构但是暂时我需要将其拆分成文件 - 我有一个300行控制器方法,在调用时执行了很多api工作,我只是想放一些代码进入另一个文件,所以我可以更好地阅读它,而无需重新编写它。

if($type == "like"){

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

}else{

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

}

我尝试了上面的方法,但它像平常一样对待它(你会相信吗) -

基本上我想将代码复制并粘贴到另一个文件中以稍微清理它,但新文件应该只是当前方法的扩展。我不知道如何使用php函数(require_once或类似的)..可以ci不这样做吗?

澄清

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

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

我的回答

修复是将代码转换为控制器目录中的子文件夹为我的帖子控制器我把两个文件放在posts子文件夹然后使用require_once-这工作但我认为ci可能有soemthing来加载代码块。

1 个答案:

答案 0 :(得分:0)

一般规则是保持控制器的纤薄 DRY是您需要认真对待并驾驭的事情。

通常我会准备控制器来调用单个模型方法,
并且这个模型方法将准备好,并以正确的格式将所有必要的数据返回给控制器方法

因此,您可以避免在控制器中进行结果循环

$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
  }
}