
-------【CodeIgniter源码剖析】
唐大麦
只要往前走,就不会迟。精疲力尽的时侯应该选择休息,切不可放弃。
展开
-
CodeIgniter框架源码笔记(10)——SESSION类之用户接口CI_SESSION
初始化 Session 类:this−>load−>library(‘session′);初始化之后,就可以使用this->load->library(‘session’); 初始化之后,就可以使用this->session来访问 Session 对象了。 在 CLI 模式下,Session 类将自动关闭。在 CodeIgniter 之前的版本中,Session 类并没有实现锁机制,这也就意味原创 2016-08-19 08:21:31 · 4378 阅读 · 0 评论 -
CodeIgniter框架源码笔记(14)——SESSION之Mysql驱动实现
配置选项save_path用来作为表名。 存储Session的表结构如下:'id' => $session_id,'ip_address' => $_SERVER['REMOTE_ADDR'],'timestamp' => time(),'data' => $session_datasession_start()时,调用了open(),read()方法。并有一定机率触发gc()方法。 se原创 2016-08-25 21:09:15 · 1927 阅读 · 0 评论 -
CodeIgniter框架源码笔记(2)——请求的接收者:框架入口index.php
作为框架的入口文件,index.php并没有负责整个框架生命周期的生成和调度,它仅仅做了一个环境设置和常量初始化的工作(重点是跟文件路径相关的几个常量)。接下来我们一层一层来看看:一、设置常量ENVIRONMENT,这个常量决定了报错级别、配置Config加载。define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');$_SERVER['CI_ENV'] 的值可以在 .htaccess原创 2016-07-06 21:16:14 · 1722 阅读 · 0 评论 -
CodeIgniter框架源码笔记(9)——日志记录类Log.php
日志记录类Log结构:$_log_path:日志存放路径$_file_permissions:写入的日志文件权限,默认为0644,即rw-r--r--$_threshold:允许写日志的阀值,默认为1 0 = Disables logging, Error logging TURNED OFF 1 = Error Messages (including PHP er原创 2016-07-27 20:23:48 · 2808 阅读 · 0 评论 -
CodeIgniter框架源码笔记(8)——性能调试:基准测试类Benchmark.php
在性能调试过程中,我们想更精确的了解类库加载时间,控制器方法执行时间,缓存操作时间怎么做?或者我们想很俗气的在网站底部显示一个:本次加载耗时0.007s应该怎么做?CI框架提供了一个叫Benchmark的基准测试类,用于计算两个标记点之间的时间差。使用流程如下:1、标记一个起始点2、标记一个结束点3、使用 elapsed_time 函数计算时间差。$this->benchmar原创 2016-07-27 20:16:47 · 890 阅读 · 0 评论 -
CodeIgniter框架源码笔记(7)——强大的配置管理器:配置类Config.php
类结构及说明功能:Config类作为配置管理类,有以下几个主要功能:加载配置文件获取配置项值设置配置项(临时)url处理,不明白怎么放这里CodeIgniter 默认有一个主要的配置文件 application/config/config.php 。所有配置项都存储在一个叫做 $config 的数组中。可以往这个文件中添加自己的配置项,也可以创建自己的配置文件并保存原创 2016-07-26 22:33:14 · 2514 阅读 · 0 评论 -
CodeIgniter框架源码笔记(6)——支持友好的URI地址:路由类Router.php
Router类:将URI映射到对应的控制器及方法Router类大量代码处理的是自定义路由,该类要支撑以下几个功能点:1、自定义路由规则在 application/config/routes.php 文件中的 $route 的数组,利用它可以设置路由规则。 在路由规则中可以使用通配符或正则表达式。使用通配符:$route['product/:num'] = 'catalog/prod原创 2016-07-26 11:58:55 · 5006 阅读 · 0 评论 -
CodeIgniter框架源码笔记(5)——识别多种URI风格:地址解析类URI.php
类主要方法参考说明(摘抄CI手册):在开始之前,先看配置文件/*|--------------------------------------------------------------------------| URI PROTOCOL|------------------------------------------------------------------原创 2016-07-15 18:04:14 · 3681 阅读 · 0 评论 -
CodeIgniter框架源码笔记(4)——负责屏幕上呈现的内容:输出类Output.php
Output类参考说明(摘抄CI手册):在一般情况下,你可能根本就不会注意到输出类,因为它无需你的干涉, 对你来说完全是透明的。例如,当你使用 加载器 加载一个视图文件时,它会自动传入到输出类,并在系统执行的最后由 CodeIgniter 自动调用。尽管如此,在你需要时,你还是可以对输出进行手工处理。在说Output类前先说几个知识点和编程技巧:$_SERVER['HTTP_ACC原创 2016-07-15 16:33:51 · 3216 阅读 · 0 评论 -
CodeIgniter框架源码笔记(3)——每次请求的总调度师傅:引导文件CodeIgniter.php
现在我们进入CI框架最重要的一环,引导文件defined('BASEPATH') OR exit('No direct script access allowed');此行在以后的每个系统文件中都会出现,防止客户端不通过入口,直接访问这些文件我理解的CI工作流程如下:一、设置版本号define('CI_VERSION', '3.0.4');二、加载常量if原创 2016-07-08 10:42:44 · 1868 阅读 · 0 评论 -
CodeIgniter框架源码笔记(1)——回忆:准备
看代码,一定要有全局观,先俯瞰了解整个架构思想,流程组成,体系组成,如果想了解CI的使用,可以参考http://codeigniter.org.cn/user_guide/tutorial/index.html,非常简单。本文重点不在教你如何使用CI框架。而是在剖析CI源码的同时,对于其中涉及的高级编程技巧和知识点着重分析。借分析源码的过程,锻炼WEB开发思想,提升技巧。本系列文章基于原创 2016-07-07 10:17:39 · 1167 阅读 · 0 评论 -
CodeIgniter框架源码笔记(11)——SESSION类之闪出数据FlashData实现
官方说Flashdata闪出数据指的是一种只对下一次请求有效的 session 数据, 之后将会自动被清除 看源码后理解:Flashdata闪出数据对本次请求的页面程序中,随便你调用多少次,当切换页面请求后,闪出数据就无效了 比如,商品列表删除某条记录后,提示“商品:扫地机器人已删除”。或者编辑文章时保存后提示“文章修改成功”或“修改失败,参数错误”等。 flashdata 就是常规的 ses原创 2016-08-19 08:27:54 · 2117 阅读 · 0 评论 -
CodeIgniter框架源码笔记(13)——SESSION之文件File驱动实现
CI的文件驱动要满足以下三个条件: 1、驱动要实现open ,read ,write ,close ,destory ,gc六个方法。 session_start()时,调用了open(),read()方法。并有一定机率触发gc()方法。 session_commit()或session_write_close()时,触发write(),close()方法。 session_destory(原创 2016-08-19 08:59:47 · 4146 阅读 · 0 评论 -
CodeIgniter框架源码笔记(12)——SESSION类之临时数据TempData实现
Tempdata指的是一种带有有效时间的 session 数据, 当它的有效时间已过期,或在有效时间内被删除,都会自动被清除。 tempdata 也是常规的 session 变量,只不过以特殊的方式保存在 ‘__ci_vars’ 键下 源码的体现是:在本次请求或本页面中,调用tempdata时不会判断过期的,哪怕超过了时间。只有在下一个页面请求调用时,才会判断是否过期。设置session临时数据原创 2016-08-19 08:31:25 · 963 阅读 · 0 评论 -
CodeIgniter框架源码笔记(15)——SESSION之Redis驱动实现
CodeIgniter框架源码笔记(14)——SESSION之Redis驱动实现session_start()时,调用了open(),read()方法。并有一定机率触发gc()方法。 session_commit()或session_write_close()时,触发write(),close()方法。 session_destory()会触发desotry()方法。1、驱动要实现open ,r原创 2016-08-25 21:21:06 · 5481 阅读 · 0 评论