最近在学习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. 4. K线经典组合及意义一

    一. K线的三种形态: 1. 上升形态 2. 下跌形态 3. 顶部及底部形态 二. K线组合三大类 1. 上升形态,当这种K线或K线组合出现,表示股价要上涨. 2. 下跌形态,当这种K线或K线组合出现 ...

  2. C#高级编程笔记 2016年10月26日 MVC入门 Controller

    1.MVC的定义:   Models: Classes that represent the data of the application  and that use validation logi ...

  3. 耿丹CS16-2班第六次作业汇总

    Deadline: 2016-11-13 11:59 作业内容 第六次作业总结 00.本次题目分值最高为**6分/题 × 7题 + 5分/篇 × 1篇 = 47分**,其中有新解法者每题加原创分**2 ...

  4. set使用方法

    set 添加一个无序的,用set方法,访问速度快,天生解决了重复问题 1.difference 指定某个元素从原来set取出,并生成新的set #difference a = set(["a ...

  5. MAC实用的小工具

    一.XtraFinder(右键菜单扩展) http://www.xuebuyuan.com/173454.html http://www.mamicode.com/info-detail-111618 ...

  6. 自动化运维 Expect

      Mac 下载:brew install homebrew/dupes/expect expect : ->  自动化脚本工具:  用于处理交互命令; #注意 调用时并不是使用的 /bin/b ...

  7. iOS Swift的一些小知识(不断补充)

    1. 在swift文件里是不能写c语言函数的,不兼容c,直接报错.想调用c语言函数,就要利用系统提供的桥接功能,就如同swfit中调用oc一样! 2.swift 2.0后提供了@convention( ...

  8. 463. Island Perimeter

    https://leetcode.com/problems/island-perimeter/ 在一个N×N的矩阵中,N<100,1代表岛,0代表海,岛内没有海,求岛的周长 [[0,1,0,0] ...

  9. HSSFWorkBooK用法

    public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFShe ...

  10. C/C++: C++位域和内存对齐问题

    1. 位域: 1. 在C中,位域可以写成这样(注:位域的数据类型一律用无符号的,纪律性). struct bitmap { unsigned a : ; unsigned b : ; unsigned ...