在请求 - 响应过程中,当运行Yii -2.0应用程序时,幕后的内容是什么?

时间:2016-02-28 11:03:38

标签: php yii2

我试图在php中创建一个最简单,最基本的请求 - 响应系统,类似于Yii-2.0。为此我在基本的\ web \ index.php里面读到了:

$application = new yii\web\Application($config);
$application->run();

我挖得更深,但无法弄清楚这个过程是如何进行的。

以下是我发现的内容:

yii \ web \ application中的run()方法具有此功能(不包括触发器):

$response = $this->handleRequest($this->getRequest());
$response->send();
return $response->exitStatus;

handleRequest只是一个抽象函数,

abstract public function handleRequest($request);

所以我基本上不明白这段代码是如何回复的?

更新

这里回答的是快速参考的handleRequest函数:

public function handleRequest($request)
    {
        if (empty($this->catchAll)) {
            list ($route, $params) = $request->resolve();
        } else {
            $route = $this->catchAll[0];
            $params = $this->catchAll;
            unset($params[0]);
        }
        try {
            Yii::trace("Route requested: '$route'", __METHOD__);
            $this->requestedRoute = $route;
            $result = $this->runAction($route, $params);
            if ($result instanceof Response) {
                return $result;
            } else {
                $response = $this->getResponse();
                if ($result !== null) {
                    $response->data = $result;
                }
                return $response;
            }
        } catch (InvalidRouteException $e) {
            throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'), $e->getCode(), $e);
        }
    }

我正在研究整个过程。我会尽快发布作为答案。可能我们会制作一个比Yii文档更好的流程图。 :)