最近在学习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. PhotoSwipe插件的使用

    1.首先引入插件 <link rel="stylesheet" href="css/photoswipe.css"> <link rel=&q ...

  2. Linux文件与目录管理

    .      代表此层目录 . .     代表上一层目录 -      代表前一个工作目录 ~     代表"目前用户身份"所在的中文件夹 ~account   代表accoun ...

  3. sql跨库查询

    ---------------------------------------------------------------------------------- --1. 创建链接服务器 --1. ...

  4. cacti 安装

    cacti:是常用的一个监控软件(开源,免费) 特点:重图形,有数据历史,需要用到数据库的支持,支持web配置,默认不支持告警,可以加插件 cacti安装 1.安装扩展源epel (nagios 和z ...

  5. 如何封装JS ----》JS设计模式《------ 封装与信息隐藏

    1. 封装与 信息隐藏之间的关系 实质是同一个概念的两种表达,信息隐藏式目的,二封装是借以达到目的的技术方法.封装是对象内部的数据表现形式和实现细节,要想访问封装过额对象中的数据,只有使用自己定义的操 ...

  6. 前端模拟 图片上传---->>通过选取的图片获取其路径<<------

    <head> <meta charset="UTF-8"> <title>Title</title> <style> d ...

  7. OpenGL glMultMatrixf() glPushMatrix() glPushMatrix()浅析

    我在之前的博客中曾提到过,OpenGL中坐标是采用行向量表示的,与之相对应的是,在矩阵变换中使用的是变换矩阵的转置,并且使用的是后乘的方式.本文直接使用下面的代码来及其后的图示来解释函数 p,li { ...

  8. C+继承

    // 继承.cpp : Defines the entry point for the console application.// #include "stdafx.h" str ...

  9. CMS系统存储路径

    CMS系统特点:前后端分离 index.html 首页文件index.php 管理后台的页面 api文件夹: 提供的接口 caches文件夹: 缓存文件 html文件夹:  生成的静态页面 phpcm ...

  10. iOSIPV6简单测试环境搭建

    应苹果官方要求,iOS应用必须适配IPV6才能通过审核,这里分享一个简单的ipv6测试方法 一.工具原料 1.1 Mac电脑一台 1.2 iPhone手机两部 1.3 数据线一根 二.步骤方法 2.1 ...