CI框架浅析(全篇)
- index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源;
- Router 检查 HTTP 请求,以确定如何处理该请求;
- 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;
- 在加载应用程序控制器之前,对 HTTP 请求以及任何用户提交的数据进行安全检查;
- 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
- 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用于 后续的请求。
{● benchmark: "Benchmark",● hooks: "Hooks",● config: "Config",● log: "Log",● utf8: "Utf8",● uri: "URI",● router: "Router",● output: "Output",● security: "Security",● input: "Input",● lang: "Lang",● loader: "Loader"
}
- pre_system 在系统执行的早期调用,这个时候只有 基准测试类 和 钩子类 被加载了, 还没有执行到路由或其他的流程。
- pre_controller 在你的控制器调用之前执行,所有的基础类都已加载,路由和安全检查也已经完成。
- post_controller_constructor 在你的控制器实例化之后立即执行,控制器的任何方法都还尚未调用。
- post_controller 在你的控制器完全运行结束时执行。
- post_system 在最终的页面发送到浏览器之后、在系统的最后期被调用。
function &get_instance()
{return CI_Controller::get_instance();
}
下面看一下CI框架几个重要部分:
模型
辅助函数
/*** Helper Loader** @param string|string[] $helpers Helper name(s)* @return object*/public function helper($helpers = array()){is_array($helpers) OR $helpers = array($helpers);foreach ($helpers as &$helper){$filename = basename($helper);$filepath = ($filename === $helper) ? '' : substr($helper, 0, strlen($helper) - strlen($filename));$filename = strtolower(preg_replace('#(_helper)?(\.php)?$#i', '', $filename)).'_helper';$helper = $filepath.$filename;if (isset($this->_ci_helpers[$helper])){continue;}// Is this a helper extension request?$ext_helper = config_item('subclass_prefix').$filename;$ext_loaded = FALSE;foreach ($this->_ci_helper_paths as $path){if (file_exists($path.'helpers/'.$ext_helper.'.php')){include_once($path.'helpers/'.$ext_helper.'.php');$ext_loaded = TRUE;}}// If we have loaded extensions - check if the base one is hereif ($ext_loaded === TRUE){$base_helper = BASEPATH.'helpers/'.$helper.'.php';if ( ! file_exists($base_helper)){show_error('Unable to load the requested file: helpers/'.$helper.'.php');}include_once($base_helper);$this->_ci_helpers[$helper] = TRUE;log_message('info', 'Helper loaded: '.$helper);continue;}// No extensions found ... try loading regular helpers and/or overridesforeach ($this->_ci_helper_paths as $path){if (file_exists($path.'helpers/'.$helper.'.php')){include_once($path.'helpers/'.$helper.'.php');$this->_ci_helpers[$helper] = TRUE;log_message('info', 'Helper loaded: '.$helper);break;}}// unable to load the helperif ( ! isset($this->_ci_helpers[$helper])){show_error('Unable to load the requested file: helpers/'.$helper.'.php');}}return $this;}
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- Inflector 辅助函数
- 语言辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
CI 类库
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
数据库
$db['default'] = array('dsn' => '','hostname' => 'localhost','username' => '','password' => '','database' => '','dbdriver' => 'mysqli','dbprefix' => '','pconnect' => FALSE,'db_debug' => (ENVIRONMENT !== 'production'),'cache_on' => FALSE,'cachedir' => '','char_set' => 'utf8','dbcollat' => 'utf8_general_ci','swap_pre' => '','encrypt' => FALSE,'compress' => FALSE,'stricton' => FALSE,'failover' => array(),'save_queries' => TRUE
);
提供了简单的查询缓存:
Key | Description | Default |
benchmarks | 在各个计时点花费的时间以及总时间 TRUE | |
config | CodeIgniter 配置变量 TRUE | |
controller_info | 被请求的控制器类和调用的方法 TRUE | |
get | 请求中的所有 GET 数据 TRUE | |
http_headers | 本次请求的 HTTP 头部 TRUE | |
memory_usage | 本次请求消耗的内存(单位字节) TRUE | |
post | 请求中的所有 POST 数据 TRUE | |
queries | 列出所有执行的数据库查询,以及执行时间 TRUE | |
uri_string | 本次请求的 URI TRUE | |
session_data | 当前会话中存储的数据 TRUE | |
query_toggle_count | 指定显示多少个数据库查询,剩下的则默认折叠起来 25 |
CI框架浅析(全篇)相关推荐
- 【CI3.1】CI框架简单使用方法
CI框架简单使用方法 1.回忆MVC1.1.M:模型,提供数据,保存数据1.2.V:视图,只负责显示,表单form1.3.C:控制器,协调模型和视图1.4.action:动作,是控制器中的方法,用于被 ...
- ci框架 mysql_CodeIgniter (CI)框架中的数据库查询汇总
引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...
- CI框架如何删除地址栏的 index.php
默认 CI 框架显示地址是 http://localhost/ci/index.php/test/ 去掉index.php这样会更好些. 1.修改Http.conf的 LoadModule rewri ...
- 最简单的CI框架入门示例--数据库取数据
这个写给初学者看,这是最简单可以调通的例子,网上很多例子其实初学者本地跑不通,缺这少那. 1.下载CI框架(自己找) 2.配置 database.php配置: 为数据库服务器设置 connec ...
- CI框架css引入出现问题
初次使用CI框架,使用base_url()引入css等资源的时候,源码看起来没有错,但是点击以后发现重复路径了.最后才知道是自己的配置没有写好. 在config.php中 $config['base_ ...
- PHP CI框架目录结构及运行机制
CI目录结构 CI主要组成部分为,application(应用文件夹).system(系统文件夹)和index.php入口文件. 应用文件夹中主要是存放控制器.模型和视图等,系统文件夹中主要是存放组成 ...
- CI框架表单提交数据接收乱码
2019独角兽企业重金招聘Python工程师标准>>> 下午再用CI (2.25) 提交表单发现post过来的数据是乱码.文档编码,浏览器解析编码都是GBK. request显示是正 ...
- 雷林鹏分享:解决CI框架的Disallowed Key Characters错误提示
用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示.有人说 url 里有非法字符.但是确定 url 是纯英文的,问题还是出来了.但清 ...
- php ci项目总结,分享关于php CI框架使用的一点小总结
最近频繁使用CI框架,这里主要是关于后台的开发,重点分享关于Model和Controller层的一点点总结: 1.涉及到交互数据库,我们先在database.php总添加我们需要使用的数据库的连接信息 ...
最新文章
- encodeURIComponent的用法
- html 和 body标签的 css 设置
- android 设置PopupWindow的显示大小
- 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
- Linux下libxml2编程基础
- Ajax基石脚本异步并发调用参数传递
- git reflog
- linux简单的操作命令
- layui扩展第三方模块_Layui集成第三方插件nicescroll
- 【作图】origin制作图中图
- acme申请泛域名证书
- 5-2 jmu-java-m05-自定义Judgeable接口 (10分)
- BeEF-XSS实验手记
- 网站优化 SEO概念
- 【正点原子MP157连载】第二章 Ubuntu系统入门-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 2022年财富世界500强研究报告
- “网上下单”生活神技能,寄快递在线下单、查快递实时物流信息
- 优达(Udacity)-机器学习基础-数据集与问题(安然数据集)
- SQL中grant的用法
- STM32F103C8T6控制电机驱动模块298N驱动电机调速以及正反转(附代码资源包)