2011-05-15 62 views
2

当写的CodeIgniter应用我的控制器动作往往开始的几行如下:笨延迟加载库/模型/等

$this->load->model('abc_model'); 
    $this->load->library('ijk'); 

然后(只是为了完整性),他们使用方法如下:

$this->abc_model->fetch_123(); 
    $this->ijk->do_something(); 

对于延伸MY_Controller是否会有任何错误,以便以下可能?

$this->model('zbc_model')->fetch_stuff(); 
    $this->library('ijk')->do_something(); 

优点:

  1. 的类不被加载,直到他们实际使用
  2. 就不需要使用config/autoload.php
  3. 稍微干净的代码自动加载任何类(可以说)

缺点:

  1. 一个额外的方法调用,每次访问(通常只是返回虽然已经加载实例)
  2. 稍微混乱的代码(可以说)

回答

2

使用菲尔鲟鱼的technique,将它添加到您的应用程序/配置/配置.php

/* 
| ------------------------------------------------------------------- 
| Native Auto-load 
| ------------------------------------------------------------------- 
| 
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work 
| for base controllers and some third-party libraries. 
| 
*/ 
function __autoload($class) 
{ 
if(strpos($class, 'CI_') !== 0) 
{ 
    @include_once(APPPATH . 'core/'. $class . EXT); 
} 
}