接上一篇起源

ThinkPHP/Library/Think/下找到App.class.php,他就是应用程序类,他会见证整个应用从创建到消亡的整个过程。

上次我们分析到系统执行App::run(),下面开始分析此方法:

static public function run() { // 应用初始化标签 Hook::listen(‘app_init’); App::init(); // 应用开始标签 Hook::listen(‘app_begin’); // Session初始化 if(!IS_CLI){ session(C(‘SESSION_OPTIONS’)); } // 记录应用初始化时间 G(‘initTime’); App::exec(); // 应用结束标签 Hook::listen(‘app_end’); return ; }

看起来很简单嘛!

  1. 添加APP初始化钩子
  2. 执行APP初始化
  3. 判断如果是cli执行,载入SESSION_OPTIONS配置
  4. 记录初始化时间
  5. 执行APP
  6. 添加APP结束钩子

其实你只看到了##The tip of the iceberg##,APP的初始化也是一个比较复杂的过程。

下面我们就铺开各个执行过程,看看到底发生了什么。

首先,系统调用了Hook::listen方法,事件名为##app_init##。关于更多的Hook使用方法,可以参考老高的这篇文章