CodeIgniter源码分析 第二弹
来源:互联网 发布:cfda官网 数据核查 编辑:程序博客网 时间:2024/06/09 18:46
CodeIgniter的文件结构与加载机制分析
System
core 核心文件database 数据库驱动
fonts 应该是在生成验证码的时候会用上,基本上不用,不用深究
helpers 系统封装的函数
language 语言包放置位置,除了在做多语言系统的情况也用不上
liararies 系统封装的类库
application
cache 存储CodeIgniter生成的缓存文件config 放置配置文件
controller 放置MVC中的控制器
core 放置应用程序核心文件
errors 放置错误显示文件
helpers 放置应用程序函数
hooks 放置Hook文件
language 放置语言包
libraries 放置应用程序类库,可自定义
logs 放置日志文件
models 放置数据库模型文件
third_party 放置第三方组件
views 放置视图文件
.htacess 用于Apache的URL重写功能
Codeigniter应用类库和辅助函数的使用方式
$this->load->helper('array')或$this->load->library('cart')或$this->load->view('name')或$this->load->model('blog/queries');$this->load是实例化的Loader类
helper是加载辅助函数的方法
library是加载类库的方法
view是加载视图的方法
model是加载模型的方法
参数为函数文件名。
在Loader类文件的构造函数中有如下代码:
$this->_ci_library_paths = array(APPPATH, BASEPATH);
$this->_ci_helper_paths = array(APPPATH, BASEPATH);
$this->_ci_model_paths = array(APPPATH);
$this->_ci_view_paths = array(APPPATH.'views/' => TRUE);
加载类在实例化时已经包含了所有正确放置对应文件的文件夹地址。根据文件名加载,如果在文件夹中存在就包含相应的文件,不存在就报错。
在CodeIgniter.php中
有很多类似于$EXT =& load_class('Hooks', 'core');的代码。
在Controller.php中也一段代码:
$this->$var =& load_class($class);
而在Common.php中Load_class的实现代码为:
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
{
代码略....
}
load_class先是判断是否加载这个文件,如果加载过就不再加载。对于一个控制器而言,实例化后的对象都指向同一位置,有点类似与单例模式,不会造成内存资源的浪费。
如果要自定义辅助函数或自定义类库,就可以直接将写好的函数或类库文件保存在应用程序相应的文件夹中。
0 0
- CodeIgniter源码分析 第二弹
- CodeIgniter框架源码分析第二篇CodeIgniter.php
- CodeIgniter 源码分析第一弹
- codeigniter源码分析
- codeigniter源码分析-核心文件CodeIgniter.php
- CodeIgniter源码分析之CodeIgniter.php
- CodeIgniter源码分析之CodeIgniter.php
- CodeIgniter源码分析之CodeIgniter.php
- CodeIgniter源码分析 【链接收藏】
- hdfs源码分析第二弹
- CodeIgniter源码分析之index.php
- CodeIgniter源码分析之Common.php
- CodeIgniter源码分析之URI.php
- CodeIgniter源码分析之Router.php
- CodeIgniter源码分析之Exception.php
- CodeIgniter源码分析之Benchmark.php
- CodeIgniter源码分析之Config.php
- CodeIgniter源码分析之Hook.php
- session过期时间的设置
- java 多线程
- 【OpenCV入门指南】第二篇 缩放图像
- 创建数据库连接执行SQL语句
- 类方法和实例方法
- CodeIgniter源码分析 第二弹
- C++中cout和cerr的区别
- UVa 539 - The Settlers of Catan
- Android日期时间倒计时
- Eclipse转IntelliJ IDEA的一点心得
- JumpTo和JumpBy
- magento读写分离
- “基于大数据的数据挖掘”技术讲座圆满结束!
- 详解Objective-C的meta-class