摘要:通过这个函数可以很方便的在程序运行期间执行很多常见操作。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。
index.php
index.php 是整个框架的入口文件,也就是说所有的请求都要从它这里开始。因为 index.php 源码非常简洁,那么我们直接放一张源码截图,按着截图说一下源码。
文件位置:/index.php
代码很简单,一共7行,前几行还只是定义一些变量,属于前言,就像是我的笔记之一,看不看没什么用啊。第六行进入了正题,它new了一个新的对象 $path ,根据前边 require 的路径,可以找到 paths.php 的源码:
文件位置:/application/config/paths.php
可以看出来这个类定义了系统目录的位置,因此如果有想定制目录结构的同学,这里肯定也要相应修改下。
因为我们主要是搞源码,肯定不会改动目录,因此这个文件对我们用处不大。
回到 index.php ,那么只剩下两行代码了:
$app = require rtrim($paths->systemDirectory,"/ ")."/bootstrap.php"; $app->run();
这两行代码就像开机键一样,就那么潇洒的执行下,你的整个程序就跑起来了。
第一行代码 require 了一个 bootstrap.php 文件,在这个文件里,完成了整个 CI 框架的初始化,包括自动加载等等。
$app->run() 这一行,完成了整个应用程序的运行。因为之后还要对这两行代码深入讲,这里仅仅带过。
以下是程序的执行过程:
bootstrap.php 文件:bootstrap.php 是整个 CI 的 “BIOS 系统”,它仅仅负责初始化一些自动加载和找到 Codeigniter 核心一并初始化后返回给入口文件。
下面是 bootstrap.php 的源码截图:
第 9 行之前全部是定义一些路径常量
第 9 行 require 进来了一些常量,如果你有自己的一些常量也可以考虑加到这个文件里,那么几乎在整个 CI 执行期间应该都可以使用。
第 10 行 Common.php 这个文件定义了一些常用的函数,如 cache 、 view 、 session 等。通过这个函数可以很方便的在程序运行期间执行很多常见操作。
第 11 行是 CI 自己实现的自动加载类,大部分情况用于自动加载自己的类库,当然为了能兼容大火的 Composer 在 18-20 行, 也对 Composer 进行了处理。
第 12 行是 CI 自己的自动加载的配置,如果你自己写的类文件,想让 CI 帮你自动加载,可以把类相关信息配置到这里。
第 13 行的 services.php 是个重头戏,它是容器的一种实现,可以把你写的一些类库初始化信息配置在其中,那么需要的时候,可以像 15 行一样直接使用这个类,并在运行期间保证了这个类的单实例化。
第 15 行如上所说,真正实例化了 CI 自己的 autoload 类,并在 16 行把 application 目录下的 autoload 配置传入,并在 17 行进行了注册。
第 22 行,据 CI 注释说:始终加载 url 这个 helper , 原因是 90% 的应用代码都会用到它。话说这个 helper 函数是前边 Common.php 加载进来的。
第 23 行是核心,它 new 了 Codeigniter 这个核心类,并把 application/config/app.php 的配置传入了,在 24 行初始化了一下 ,随之返回给了 index.php
下面以一张拙劣的流程图结束本篇文章:
总结以及下节预告本节分析了一下 CI 的 BIOS 系统: bootstrap.php ,这个文件初始化了一些基本的类,找到并初始化了 CI 核心对象,同时将该对象返回给的入口文件。
下节当然要通览一下 Codeigniter.php 文件。
此文可以转载,但转载前需要发邮件到imustgxd*sina.cn进行沟通,未沟通的均视作侵权。
转载同时需注明原文链接 (https://segmentfault.com/a/11... ,并保留此段文字。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22894.html
摘要:行处理视图文件名后缀。结语从源码上看,使用了原始作为模版机制使得视图逻辑非常简单。无非也就是把视图进来,用输出缓冲把执行结果拿到即可。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制,CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺...
摘要:行,是否强制访问。行,尝试处理此次请求,详细见方法。至此,的执行主流程完毕。小结是的核心文件,它被调用后,完成了诸多的主流程操作。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 Codeigniter.php 是 CI 4 的核心所在,在这里接收并处理了 request 请求,安全检查,缓存处理, URL 解析以及路由匹配,执行过滤器,加载运行 Controll...
摘要:版权声明可转载,但不论任何媒体都需要在转载前与本人沟通,并在转载时注明出处。的各个核心模块以模块名为目录名分别存储在这个目录下。下一篇文章会涉及到和。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 写在前面: 为什么选择开发过程中的 CI 4 作为源码解读版本:(1)首先我选 CI 是因为它之前的稳定版都是相对比较轻量小巧的,而且可以认为是简单的。(2)为什么没有选...
摘要:控制器严格来说,这个是控制器父类的源码。在中,控制器仅负责接到返回的组装的页面字符串,并回核心中,由核心再处理后续事宜。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 其实一开始我是很纠结是否要写控制器的源码分析的,因为控制器的源码太少了,少到你不相信这是一个 MVC 里的一个重头。直觉里,大家都觉得控制器作为各个请求的入口,其后端应该有很多很多的代码支撑才可以...
摘要:行,判断如果为空,那么返回默认路由。行,把处理完毕后找到的返回。方法该方法是自动按着约定规则去目录去找路由的过程。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个框架或者...
阅读 3332·2021-10-13 09:40
阅读 2567·2021-10-08 10:17
阅读 3968·2021-09-28 09:45
阅读 899·2021-09-28 09:35
阅读 1774·2019-08-30 10:51
阅读 2882·2019-08-26 12:11
阅读 1620·2019-08-26 10:41
阅读 3067·2019-08-23 17:10