在codeigniter中加载模型的最佳方法是什么?

时间:2016-03-23 16:54:03

标签: php codeigniter

我使用Codeigniter编写代码,我想在第一次打开页面时增加加载时间。实际上,当我编写代码时,我在我的构造中加载所有模型,如下所示:

public function __construct(){
    parent::__construct();
    $this->load->model('Fa_promo');
    $this->load->model('Fa_project');
    $this->load->model('Fa_inbox');
    $this->load->model('Fa_quotes');
    $this->data['keywords']=$this->Configuration->get_keyword();            
    $this->data['about'] = $this->Fa_menu->get__content_from__slug('about');
    $this->data['menu']=$this->Fa_menu->list_menu_level1(); 
    $this->Configuration->update_hits();            
    }

我的问题是,如何以最佳方式加载模型以提高上述之间的性能或者像这样?

public function __construct(){
  parent::__construct();                        
}
public function a(){
  $this->load->model('Fa_promo');
  $this->Fa_promo->load();
}
public function (){
  $this->load->model('Fa_project');
  $this->Fa_project->load();
}

感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

在每个函数中单独加载它们会更快,因为您可以限制加载模型的调用次数,但差异可能很小

如果你在构造函数中加载它们,那么你可以在一个加载的控制器中的任何一点使用它们,这可能会慢一点,但好处是它们已加载并准备就绪。它可以使用比单个给定函数所需的更多的内存。

如果要保存用于加载模型的代码,可以始终在构造函数中执行以下操作:

$this->load->model(['Fa_promo', 'Fa_project', 'Fa_inbox', 'Fa_quotes]);

这将一次性加载所有模型。这没有实时的好处,因为传递数组会导致加载器为每个项目调用自身,因此它与您当前拥有的相同。

答案 1 :(得分:2)

codeigniter docs说:通常会在控制器方法中加载和调用模型。

第一种方法有很大的优势:您可以在所有控制器方法中重复使用它,而不必一遍又一遍地输入每种方法。

关于绩效:我认为它没有任何区别,模型中的功能可能会减慢事情