Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将大型控制器方法拆分为文件_Php_Codeigniter - Fatal编程技术网

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

Php 将大型控制器方法拆分为文件,php,codeigniter,Php,Codeigniter,我的代码还远没有干涸,需要重构,但目前我需要将其拆分成文件——我有一个300行的控制器方法,在调用时可以执行大量的api工作,我只想将一些代码放到另一个文件中,这样我就可以更好地阅读它,而无需重新编写 if($type == "like"){ $this->load->helper('posts/likes'); }else{ $this->load->helper('posts/pic'); } 我试过上面的方法,但它像对待普通人一样(你相信吗

我的代码还远没有干涸,需要重构,但目前我需要将其拆分成文件——我有一个300行的控制器方法,在调用时可以执行大量的api工作,我只想将一些代码放到另一个文件中,这样我就可以更好地阅读它,而无需重新编写

if($type == "like"){

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

}else{

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

}
我试过上面的方法,但它像对待普通人一样(你相信吗)-

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

澄清

我有一个非常大的控制器方法-我不想在一个方法中包含400行代码,而是想将其拆分为两个文件,并让代码驻留在其中。如果条件传递,则一个文件将加载到控制器中,而不是另一个-

通过发布关于干式类方法的帖子来回答我关于如何加载文件的问题对我的情况没有帮助——代码应该被清理——重构并分类到库中,我知道这一点,但我需要一个临时补丁

我的答案


修复方法是将代码集中到控制器目录中的一个子文件夹中,用于我的帖子控制器我将这两个文件放在帖子子文件夹中,然后使用require_一次-这很有效,但我认为ci可能需要加载代码块。

一般规则是保持控制器苗条。
干燥是你需要认真对待的事情,你需要驾驭它

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

所以,您可以避免控制器中的结果循环

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

问题是如何从不同的文件中使用php,而不是干代码如果你不干,你就不必分裂!你可能会发现我胡说八道,如果不符合你的口味,跳过这个。你能澄清你的问题吗?我不知道你想做什么?我只是想澄清一下,我没有得到否决票:如果你想要,你可以在上面写一行:
$this->load->helper(“posts/”($type==“like”)?“likes”:“pic”):)