CodeIgniter源码解析
文章平均质量分 83
喜欢用这样一句话来介绍CI是什么,CI是一个免费、轻量级但功能强大且易扩展的PHP框架,使用面向对象的开发结构和MVC模式,提供了一套丰富的类库来满足通常的任务需求。总之,CI简单易学,高效实用!
ZhiHuaWei
我知道自己能力小,但,有什么可以能帮到你的吗?
展开
-
CI框架源码解析二十之文件上传类文件Upload.php
最近一直在研究Codeigniter框架,本篇博文为大家简述解析文件上传类文件的实现,以前写过一篇CI框架优化文件上传方法以及实现多文件上传的博文,大家可以放在一起进行对比阅读。CI框架教程2——优化文件上传方法以及实现多文件上传 上传一个文件通常涉及以下几步: Ⅰ 显示一个上传表单,用户选择文件并上传。 Ⅱ 当提交表单时,文件将被上传到你指定的目录。原创 2016-11-15 18:04:15 · 3772 阅读 · 0 评论 -
CI框架源码解析十九之分页类文件Pagination.php
CodeIgniter 的分页类非常容易使用,而且它 100% 可定制,可以通过动态的参数,也可以通过保存在配置文件中的参数。如果你还不熟悉 "分页" 这个词,它指的是用于你在页面之间进行导航的链接。像下面这样:« First 1 2 3 4 5 > Last »举个例子说明如何在你的控制器方法中创建分页:Ⅰ 在构造函数中引入分页类: public function原创 2016-11-08 17:04:24 · 3796 阅读 · 0 评论 -
CI框架源码解析十八之日志记录类文件Log.php
日志记录类,只要用于记录CI框架信息的一些操作日志(错误日志、调试日志、信息日志等等)。日志记录类Log结构: $_log_path:日志存放路径。 $_file_permissions:写入的日志文件权限,默认为0644,即rw-r--r--。 $_threshold:允许写日志的阀值,默认为1。 0 = Dis原创 2016-10-29 14:50:24 · 3984 阅读 · 0 评论 -
CI框架源码解析十七之异常处理类文件Exceptions.php
本篇博文讲述异常处理类文件Exceptions.php。使用CI框架,我们通常使用一下三个函数处理错误:一、show_error('消息' [, int $status_code = 500 ] );二、show_404('页面' [, 'log_error']);三、log_message('级别', '消息'),有以下三种错误信息: ① 错误类型的消息。 这种是真正的错误消息原创 2016-10-29 08:35:57 · 2912 阅读 · 0 评论 -
CI框架源码解析十六之加载器类文件Loader.php
加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 ,驱动器 ,辅助函数 ,模型或其他你自己的文件。本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI框架的autoload的基本流程。因此,可以看做是Loader组件的分析前提。 CI框架中,允许你配置autoload数组,这样,在你的应用程序初始化时,会自动加载相应的类库,例如,在applicati原创 2016-10-28 15:43:42 · 2918 阅读 · 0 评论 -
CI框架源码解析十五之模型类文件Model.php
这篇博文我们讲述模型类文件Model.php,大家一看这个文件名肯定也会觉得非常熟悉,同样的这个Model,就是我们通常所说的MVC中的M。这个文件就是我们在开发项目过程中开发模型时所有的模型类都要继承自这个文件。 Model类的代码也非常少,有用的方法就下面这一个,下面这个方法是为了在Model里面可以像控制器那么通过$this->做很多事情。例如想在model里面加载某个li原创 2016-10-28 08:56:22 · 1544 阅读 · 0 评论 -
CI框架源码解析十四之控制器类文件Controller.php
本篇博文讲述超级控制器类文件Controller.php,大家一看这个文件名肯定是非常的兴奋,这个Controller,就是我们通常所说的MVC中的C。这个文件就是我们在开发项目过程中开发控制器是所有的控制器类都要继承自这个文件。在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互。CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了原创 2016-10-27 18:00:15 · 2210 阅读 · 0 评论 -
CI框架源码解析十三之语言类文件Lang.php
本篇博文讲述语言类,主要讲述语言类的用法,关于语言类本身文件类内容并没有多少内容,比较简单,稍微查看代码就可以明白其作用用途,语言类提供了一些方法用于获取语言文件和不同语言的文本来实现国际化。下面我们讲述多语言的用法。 在你的 CodeIgniter 的 system 目录,有一个 language 子目录,它包含了一系列 英文 的语言文件。在 system/language/e原创 2016-10-27 14:47:19 · 2421 阅读 · 0 评论 -
CI框架源码解析十二之输入类文件Input.php
输入类有两个用途:一:为了安全性,对输入数据进行预处理;二:提供了一些辅助方法来获取输入数据并处理。并且该类由系统自动加载,你无需手工加载。① 对输入进行过滤 安全性过滤:当访问控制器时,安全过滤方法会自动被调用,它做了以下几件事情:首先,如果 $config['allow_get_array'] 设置为 FALSE (默认是 TRUE),销毁全局的 GET 数组。其次,当开原创 2016-10-27 10:28:42 · 2757 阅读 · 0 评论 -
CI框架源码解析十一之安全类文件Security.php
CI框架安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用。CI框架安全类提供了全局防御CSRF攻击和XSS攻击策略,只需要在配置文件开启即可并提供了实用方法: $config['csrf_protection'] = TRUE; $config['global_xss_filtering'] = TRUE; //实用方法 $this->原创 2016-10-26 17:39:50 · 2948 阅读 · 4 评论 -
CI框架源码解析十之输出类文件Output.php
输出类是个核心类,它的功能只有一个:发送 Web 页面内容到请求的浏览器。如果你开启缓存,它也负责缓存你的 Web 页面。 Output类参考说明(摘抄CI框架手册):在一般情况下,你可能根本就不会注意到输出类,因为它无需你的干涉, 对你来说完全是透明的。例如,当你使用 加载器 加载一个视图文件时,它会自动传入到输出类,并在系统执行的最后由 CodeIgniter 自动调用。尽管原创 2016-10-26 11:00:42 · 3126 阅读 · 0 评论 -
CI框架源码解析九之路由类文件Router.php
本篇博文将讲述CI框架Router路由类文件,CI框架Router路由类将URI映射到对应的控制器及方法,Router类大量代码处理的是自定义路由,该类要支撑以下几个功能点:① 自定义路由规则 在 application/config/routes.php 文件中的 $route 的数组,利用它可以设置路由规则。 在路由规则中可以使用通配符或正则表达式。使原创 2016-10-25 10:11:50 · 5109 阅读 · 1 评论 -
CI框架源码解析八之地址解析类文件URI.php
URI类主要处理地址字符串,将uri分解成对应的片段,存到segments数组中。querystring分解后存到$_GET数组,ROUTER路由类在之后的解析路由动作中,也主要依靠URI类的segments属性数组来获取当前上下文的请求URI信息。 在CI框架中如果允许传统的querystirng模式,即设置$config['enable_query_strings'] = T原创 2016-10-20 16:12:19 · 2200 阅读 · 0 评论 -
CI框架源码解析七之编码类文件Utf8.php
本篇博文主要讲述编码类文件Utf8.php。UTF8类的主要功能是检测CI框架和环境是否支持Utf8编码,转换编码,过滤字符串的功能。这个功能不多,逻辑也不是特别麻烦,下面我们就一步一步的来解析这个文件。1、构造函数__construct() /** * 构造函数:检测是否支持utf8 */ public function __constr原创 2016-10-20 09:48:18 · 1936 阅读 · 0 评论 -
CI框架源码解析六之配置类文件Config.php
一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件中(这里指Application/Config/Config.php文件),不仅如此,CI框架还允许你将配置参数放到主配置文件之外。例如,你可以定义自己的配置文件为Config_app.php, 然后在你的应用程序控制器中加载你的配置文件,如此纷繁多样的配置项和配置文件,CI框架是如何进行管理的?这便是我们今原创 2016-10-19 17:03:28 · 2949 阅读 · 0 评论 -
CI框架源码解析五之钩子类文件Hooks.php
CI框架可以实现在不修改系统核心文件的基础上来改变或增加系统的核心运行功能(如重写缓存、输出等),那就是Hooks,主要作用是CI框架下扩展base_system,它的主要作用是在CI启动时运行一些开发者定义的一些方法,来实现一些特定的功能。钩子是什么呢?我们可以这样理解:钩子是一种事件驱动模式,它的核心自然是事件(CI框架中pre_system,pre_controller等都是特定原创 2016-10-18 18:05:01 · 3284 阅读 · 0 评论 -
CI框架源码解析四之基准测试类文件Benchmark.php
本篇博客我们解析讲述的是基准测试类文件Benchmark.php,通过前面几篇博文的解析,我们已经了解到:CI框架中核心流程的核心功能都是由不同的类组件来完成的。这些类组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI框架的核心骨架。 从本篇开始,将进一步去分析各类组件的实现细节,深入CI框架核心内容的黑盒内部(通过我们的解析研究之后,原创 2016-10-18 10:29:06 · 1940 阅读 · 0 评论 -
CI框架源码解析三之全局函数库文件Common.php
从本篇开始,基本上算是深入到了CI框架的内部,下面就让我们一步步去探索这个框架的实现、结构和设计。 Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作)。 CI框架全局函数库文件Common.php中所有全局函数的定义方式都为:原创 2016-10-17 15:17:59 · 2983 阅读 · 1 评论 -
CI框架源码解析二之引导文件CodeIgniter.php
上篇解析入口文件写到载入 core/CodeIgniter.php框架核心文件,启动框架。CodeIgniter.php文件被称为BOOTSTRAP,也就是引导文件,这里也就是CI框架的核心了。其实把CodeIgniter.php这个文件的代码运行一次,就是整个CI应用都完成了一次完整的运作流程了。其中会加载一些组件,引入很多外部文件,等等。所以建议在阅读此文件代码的时候,第一遍先阅读它的大概流程原创 2016-10-15 14:32:04 · 4002 阅读 · 4 评论 -
CI框架源码解析一之入口文件index.php
Index.php作为CI框架的入口文件,源码分析,自然而然由此开始。在源码分析的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现。在博主看来CI框架的index.php文件一共完成了四项工作:① 设置框架应用的环境状态② 配置系统、应用、视图等程序目录以及得到其路径③ 系统、应用、视图等目录的正确性验证④ 载入 codeigniter/CodeIgni原创 2016-10-14 15:50:19 · 6736 阅读 · 1 评论