我试图在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文档更好的流程图。 :)