php优秀框架codeigniter学习系列——CI_Output类的学习
这篇文章主要介绍CI核心框架工具类CI_Output。
根据CI文档自己的定义,这个类主要就是生成返回的页面给浏览器。以下选取类中的重点方法进行说明。
__construct()
在构造函数中,主要确定是否对输出内容使用zlib压缩,如果使用会开启gzip压缩功能。另外还有一些细节的处理。
_display_cache(&$CFG, &$URI)
两个参数:
- &$CFG CI_Config类的实例
- &$URI CI_URI类的实例
该类先找到访问路径,并且转成md5码;
用md5码与已存在的缓存文件名进行比较,如果不存在返回false,如果存在加锁读取缓存内容;
取出存在缓存文件中的超时时间,与现在时间进行对比,如果超时,删除文件,返回false; 如果没有超时,进行下一步操作;
通过$this->set_cache_header函数设置http返回头;
通过$this->_display函数返回显示缓存内容,并返回true。
_display($output = '')
主要的处理函数,处理和发送最后的输出数据给浏览器,并且包括服务器响应头和配置数据。同时它也会停止计时器,所以可以在这里显示页面渲染用时和内存使用情况。
值得注意的是,在进入这个函数之前,所有"view"的数据已经被controller类自动存入了$this->final_output变量中。
该函数主要做了如下事情:
1.写缓存;
2.如果不是显示缓存内容,开启压缩;如果是显示缓存内容,输出内容,返回;
3.如果需要显示性能数据,在数据$output中追加上性能数据;
4.如果用户有自定义输出函数,转到该函数去输出;如果没有,直接输出$output。
php优秀框架codeigniter学习系列——CI_Output类的学习的更多相关文章
- php优秀框架codeigniter学习系列——CodeIgniter.php概览
CodeIgniter.php是CI框架的核心文件.它在前端控制器index.php之后运行,加载各类基础组件,执行请求.文件执行完成后,这次请求也就结束了.所以,该文只能对CodeIgniter.p ...
- php优秀框架codeigniter学习系列——CI_Security类学习
这篇文章主要介绍CI核心框架工具类CI_Security. 安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用.以下选取类中的重点方法进行说明. __construct() 在构造 ...
- php优秀框架codeigniter学习系列——CI_Router类学习
这篇文章主要介绍CI核心框架工具类CI_Router. 如果说CI_URI类是用来解析URI,那么CI_Router类就应该是根据解析出来的URI来决定究竟访问哪一个文件和哪一个function. 详 ...
- php优秀框架codeigniter学习系列——CI_URI类学习
这篇文章主要介绍CI核心框架工具类CI_URI. 该类主要用来解析uri和决定路由的.关于URI和URL的关系请参考这位朋友的文章.简单来说URI是唯一定位的资源,URL是唯一资源的一个网络可能访问路 ...
- php优秀框架codeigniter学习系列——CI_Loader类分析
这是一个加载视图和文件的类. __construct() 设置视图文件的路径,和获取输出缓冲级别. initialize() 该方法只会被CI_Controller调用一次,会调用 $this-> ...
- php优秀框架codeigniter学习系列——CI_Lang类学习
这篇文章主要介绍CI核心框架工具类CI_Lang. 根据CI文档自己的定义,该类用来: 提供相关的函数,用于检索语言文件和文本行,以便国际化. 以下选取类中的重点方法进行说明. __construct ...
- php优秀框架codeigniter学习系列——CI_Input类学习
这篇文章主要介绍CI核心框架工具类CI_Input. 根据CI文档自己的定义,该类用来: 提前处理全局变量,以保证安全; 提供一些帮助函数用来处理输入数据. 以下选取类中的重点方法进行说明. __co ...
- php优秀框架codeigniter学习系列——CI_Utf8类
CI_Utf8类用来对Utf8编码环境提供支持.(Provides support for UTF-8 environments). 从构造函数看,只有当开启了PCRE模式,加载了iconv或者mbs ...
- php优秀框架codeigniter学习系列——hooks
这篇文章学习CI框架的钩子特性. hooks是CI框架提供的一种机制,允许你在程序框架运行流程的某个阶段执行你自己的一些代码.比如系统运行前,CI_Controller调用前,系统运行结束后等特定的时 ...
随机推荐
- TCP之种种连接异常
1. connect出错: (1) 若TCP客户端没有收到syn分节的响应,则返回ETIMEOUT错误:调用connect函数时,内核发送一个syn,若无响应则等待6s后再发送一个,若仍然无响应则等待 ...
- Python爬虫(四)——开封市58同城数据模型训练与检测
前文参考: Python爬虫(一)——开封市58同城租房信息 Python爬虫(二)——对开封市58同城出租房数据进行分析 Python爬虫(三)——对豆瓣图书各模块评论数与评分图形化分析 数据的构建 ...
- UI自动化(八)xpath
由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐就可以增加Firebug等扩展了 ...
- 剑指offer(60)把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 从上到下打印二叉树我们知道用队列可以实现,但是如果多行打印怎么做呢? 我们需要分割,在行与行之间进行分割.如何分割 ...
- onblur 事件
onblur 事件 Event 对象 定义和用法 onblur 事件会在对象失去焦点时发生. 语法 onblur="SomeJavaScriptCode" 参数 描述 SomeJa ...
- Spring.Net —IOC详解
一. Spring.net中IOC介绍 1. 什么是IOC,控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中 ...
- Promise使用
Promise可以进行异步操作,比起回调函数,更加容易维护. 首先创建一个简单的Promise var p = new Promise( () => {}); console.log(p); / ...
- Yahoo Programming Contest 2019 D - Ears
D - Ears 思路: s:起点 t:终点 l:左端点 r:右端点 以上称为关键点 dp[i][j]表示到位置 i 为止,已经经过前 j ...
- 整合MyBatis(springboot)
pom文件: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>m ...
- SOAPdenove 使用
0. 该软件原理 它以kerm为节点单位,利用de Bruijn图的方法实现全基因组的组装.何为de Bruijn............... contig 的构建过程: (1)选取初始Kmer, ...