最近在学习CI(3.1.0-dev)框架源码,一边看源码,一边在github上面写中文注释,https://github.com/pandancode/CI-note,有兴趣的同学可以看看。

index.php流程:
1、定义开发模式,调试,开发,发布
2、设置system,application等目录
3、设置默认控制器(不建议在index.php设置)
4、设置用户配置
5、检查路径
6、定义路径常量
7、加载引导程序  system/core/codeigniter.php
 
condeigniter.php流程:
1、定义框架版本
2、加载框架定义的常数 system/config/contants.php
3、加载全部函数 system/core/Common.php
4、检查PHP版本小于5.4,做兼容性处理
5、将PHP超级变量存放在$GLOBALS数组中
6、设置错误,异常,脚本退出触发的函数
7、设置子类前缀
8、如有需要自动加载组件,则加载APPPATH/vendor/autoload.php,或者配置文件里设置的文件路径
9、加载benchmark,并记录total_execution_time_start,_base_classes_start两个时间点
10、加载Hooks,并调用pre_system钩子
11、加载config类,并初始化实例,根据首页设置配置,替换配置文件其中项
12、设置默认字符,并加载msstring、iconv扩展
13、检查mbstring,hash,password,standard类函数是否存在(可能由于版本问题,有些函数在低版本中没定义),则重新定义实现该函数
14、实例化utf8、uri、router、output类
15、缓存检查,如果没有重写cache输出,且满足缓存条件,则直接输出缓存,退出脚本
16、初始化Security、Input、Lang类
17、加载BASEPATH/core/Controller.php控制器(迟点铺开讲)
18、如果存在子控制器,则加载进来
19、设置_base_classes_end时间点
20、检查路由接触出来的class和method是否有效,如果无效,则激活404状态变量
21、检查是否重置404,如果重置404,则检查重置404类和方法是否有效,如果无效,则取消404,
22、如果404为false,第一种情况是本身404一直是未激活,则使用路由解析出来的类和方法,第二种重置了404,但是类或者方法无效,则使用默认的类和方法,否者使用新的类和方法处理404
23、如果方法不是_remap,则获取参数,Hooks调用pre_controller钩子
24、记录controller_execution_time_class_method开始时间,并初始化class
25、Hooks调用post_controller_constructor 钩子
26、调用class中method,这里会调用相应的controller和方法,方法里面在调用model来处理业务逻辑(迟点铺开讲)
27、BM记录controller_execution_time_class_method执行结束时间点
28、Hooks调用post_controller钩子
29、输出视图
30、Hooks调用post_system钩子
妈蛋,流程终于结束了。

CI框架代码运行最详细的流程的更多相关文章

  1. Vue 框架-12-Vue 项目的详细开发流程

    Vue 框架-12-Vue 项目的详细开发流程 首先,如果你还不了解 Vue 脚手架怎么搭建? 默认的环境中有哪些文件? 文件大概是什么作用? 那么,您要先查看之前的文章才有助于你理解本篇文章: Vu ...

  2. 最新的Windows环境搭建zeroMQ并使用java代码运行zeromq详细教程

    最近项目要用zeromq,linux上很好配置使用,但是windows上配置与使用没有找到合适的解决方案,看的很头疼,这里自己总结下供大家参考 准备工作: 1.libzmq下载地址:https://g ...

  3. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  4. CI 框架源码解析一之入口文件 index.php

    Index.php作为CI框架的入口文件,源码分析,自然而然由此开始.在源码分析的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现,如果英文水平很好的话,读过index.php文件的英文注释之 ...

  5. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

  6. CI框架之HOOKS使用流程及原理

        Ci框架中Hooks可以理解:在框架的执行流程过程中,允许开发者在固定的某些时间点上(如:调用控制器前,调用控制器后等时间点上),调用其他函数来扩充CI框架执行流程的一种方法.技术上来就是通过 ...

  7. CI框架的引导流程以及基准测试类

    一[CI]框架的引导流程了解一下,并掌握如何新增自己的扩展类库   http://www.cnblogs.com/ohmygirl/p/CIRead-4.html // CI框架源码阅读笔记4 引导文 ...

  8. Yii框架页面运行流程

    Yii框架页面运行流程 CComponent | CModel | CActiveRecord.CFormModel(所有模型的父类) | 表名.php(模型) | 入口文件------------- ...

  9. PHP的CI框架流程基本熟悉

    CI框架是PHP的一个快速开发框架,我是目前的公司项目后台语言用的PHP,因为我做前端开发,需要用php去填充页面数据,所以就开始去了解这个框架,学习了一些php和数据库的东西,这篇文章先具体介绍CI ...

随机推荐

  1. java日期工具类

    public class UtilDate { /** 年月日时分秒(无下划线) yyyyMMddHHmmss */ public static final String dtLong = " ...

  2. 在Extjs中对日期的处理,以及在后端数据在SQL语句的判断处理

    jsp页面可选择时间: { xtype : 'datefield', id : 'START_CREATION_DATE_', format : 'Y-m-d H:i:s', submitFormat ...

  3. Makefile的编写

    makefile介绍 makefile的功能是管理源文件的编译链接,在makefile我们可以定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能 ...

  4. WebRTC的一个例子

    内容引自:一个WebRTC实现获取内网IP的例子(穿透NAT) 网页代码直接复制到下面(如果以上链接被墙,可以直接将下面代码保存文件,然后在浏览器打开即可,不支持IE浏览器): <!doctyp ...

  5. zabbix触发器依赖

    触发器依赖 Zabbix - Router1 - Router2 – Host 如果router1宕机了,那么router2和host都不能连上,这样的话就会发router1.router2和host ...

  6. c语言内存原理

    1.内存寻址由大到小,优先分配内存地址比较大得字节给变量 2.变量越先定义,内存地址就越大 3.取得变量的地址:&变量名 4.输出地址  %p

  7. Python3.5之TuShare

    这部分是直接搬运过来的,官方网站http://tushare.waditu.com/ TuShare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据 ...

  8. 重建索引提高SQL Server性能

    大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数 ...

  9. Target runtime com.genuitec.runtime.generic.jee60 is not defined

    转载自:http://jingyan.baidu.com/article/d7130635338e3f13fdf47518.html 用eclipse加载别人的工程,报错Target runtime ...

  10. yii框架安装

    YII安装:      下载最版本http://www.framework.com 下载高级的->yii with advanced APPlication template 解压至访问目录下 ...