CodeIgniter带了自动加载的功能,可以全局加载类库、模型、配置、语言包等,对于需要全局使用的功能相当方便。 例如:有个全局函数写在app_helper.php中,需要全局加载这个函数,只需设置autoload.php: PHP复制代码 $autoload['helper'] = array('app'); 复制代码
接下来,所有的地方都可以使用了,配置、模型等配置相似。但方便的同时也需要考虑下该种加载方式有何弊端。 如果一个项目中分了两块,如前台、后台,那这个功能是否为前后台都必须? 如果前后台还有不同的业务模块区分, 是否是每个模块都要用到? 如果都需要, 那写在这里就很好, 如果不需要, 就不建议写在这里。 对于相关的类库、函数调用应该按需加载实现加载的方式有很多,可以在指定的页面load, 可以在公用的控制器、函数里面load, 一经load即可全局使用。个人的常用做法是忽略该文件,手动加载全局函数等。 说到这里,顺便说下CI的加载机制。下面为类库、函数等的加载方式:
PHP复制代码
$this->load->library('session');
$this->load->model('hello_model');
$this->load->helper(array('url', 'array'));
$this->load->language(array('user_menu', 'user_tips'));
复制代码
加载方式统一,使用起来比较简单,但load类库时传参有点不方便。再次load类库时不会再去加载,而是从保存好的静态数组中拿出来,需要注意下成员属性的状态,防止因为值还存在而导致程序异常。
|