限时 5折! 详情

yii2源码分析-应用的生命周期之执行请求

3474 0 0

最近发现自己懒了很多,总觉得生活少了点什么。今天看了下猎场,才发现原来是少了那份激情!

前面我们介绍了那么多与应用生命周期相关联的信息,包括应用的预初始化,初始化等等,其实这些都是为运行应用而做的准备。

今天我们要介绍的内容,其实很重要,我们要讲一下这些准备工作就绪之后,应用到底是如何运行的。

应用的运行,可能要分为几个步骤,我们先从 yii\base\Application::run 方法说起。

yii\base\Application::run 方法的部分代码如下

$this->state = self::STATE_BEFORE_REQUEST;
$this->trigger(self::EVENT_BEFORE_REQUEST);

$this->state = self::STATE_HANDLING_REQUEST;
$response = $this->handleRequest($this->getRequest());

$this->state = self::STATE_AFTER_REQUEST;
$this->trigger(self::EVENT_AFTER_REQUEST);

$this->state = self::STATE_SENDING_RESPONSE;
$response->send();

$this->state = self::STATE_END;

return $response->exitStatus;

代码虽然不多,但是整个流程全部看下来,还真够我们在喝一壶的。

首先,标记当前请求的生命周期状态为 yii\base\Application::STATE_BEFORE_REQUEST,即请求之前的一种状态,随后触发 yii\base\Application::EVENT_BEFORE_REQUEST 事件。

有同学可能这里就去追呀找呀,这个事件处理函数在哪呢?啥时候注册的?找了半天把自己也整迷糊了,也没看下去的心情了。这一点其实我们在yii2实战中介绍预定义

继续阅读

还有90%的精彩内容,购买继续阅读