每当我们阅读一个优秀的框架/项目时,先要理清它的整个运行流程,才能掌握和理解它的真正设计含义。CodeIgniter(简称:CI)作为一款优秀的轻量级PHP框架,其特点:简洁又不失灵活。它的内部运作原理又是怎样的呢?
CI的入口文件为index.php,核心代码位于system/Core/CodeIgniter.php.
以下为笔者整理的CI运行流程图及部分主要模块的说明。
初始化系统运行环境
a). 设置运行环境
b).注册报错回调函数
c).设置异常处理方法
d).注册系统退出回调函数基准测试单元(Benchmark): 用于统计各主要功能模块耗时及脚本内存使用情况。
钩子模块(hook): CI支持7种调用。
名称 调用时间 pre_system 系统运行前 cache_override 加载输出模块后 pre_controller 实例化controller前 post_controller_constructor 实例化controller后 post_controller 回调controller方法后 display_override 显示数据 post_system 运行结束 初始化url路由模块:顾名思义,解析请求的url,根据相应的路由映射规则,调用不同的controller类和方法。
安全模块:用于安全的处理输入数据,防止XSS 或 CSRF攻击。
input模块:对系统全局变量(GET、POST、COOKIE等)进行检测,并进行CSRF校验。
output模块: 输出web页面内容,若开启缓存,则缓存web页面。