目录
yii\web\Application类继承yii\base\Application。
一、属性
1. $defaultRoute 默认路由
2. $catchAll 指定的一个控制住操作,当应用处于维护模式时,用来处理所有请求
3. $controller 当前控制器实例
4. $_homeUrl 主页url
// 应用的默认路由
public $defaultRoute = 'site';
//指定的一个控制住操作,当应用处于维护模式时,
//用来处理所有请求
public $catchAll;
//当前控制器实例
public $controller;
// 主页url
private $_homeUrl;
二、方法
1. bootstrap方法,启动方法
- 获取请求实例
- 设置别名
- 初始化配置,加载引导组件
/**
* 启动方法
*/
protected function bootstrap()
{
//请求示例
$request = $this->getRequest();
//别名设置
Yii::setAlias('@webroot', dirname($request->getScriptFile()));
Yii::setAlias('@web', $request->getBaseUrl());
//调用父类的bootstrap,
//这个方法初始化配置和加载引导组件
parent::bootstrap();
}
2.handleRequest方法,处理请求
- 从url中解析路由和参数
- 执行请求
- 响应请求,返回结果
/**
* 处理请求
*/
public function handleRequest($request)
{
if (empty($this->catchAll)) {
try {
//从当前请求解析路由和参数
list($route, $params) = $request->resolve();
} catch (UrlNormalizerRedirectException $e) {
$url = $e->url;
if (is_array($url)) {
if (isset($url[0])) {
// ensure the route is absolute
$url[0] = '/' . ltrim($url[0], '/');
}
$url += $request->getQueryParams();
}
return $this->getResponse()->redirect(Url::to($url, $e->scheme), $e->statusCode);
}
} else {
$route = $this->catchAll[0];
$params = $this->catchAll;
unset($params[0]);
}
try {
Yii::debug("Route requested: '$route'", __METHOD__);
$this->requestedRoute = $route;
//处理请求的方法
$result = $this->runAction($route, $params);
if ($result instanceof Response) {
return $result;
}
$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);
}
}
3. getHomeUrl方法,返回主页url
/**
* 返回主页url
*/
public function getHomeUrl()
{
if ($this->_homeUrl === null) {
if ($this->getUrlManager()->showScriptName) {
return $this->getRequest()->getScriptUrl();
}
return $this->getRequest()->getBaseUrl() . '/';
}
return $this->_homeUrl;
}
4.setHomeURL方法,设置主页url
/**
* 设置主页
*/
public function setHomeUrl($value)
{
$this->_homeUrl = $value;
}
5.getErrorHandler方法,返回错误处理组件
/**
* 错误处理组件
*/
public function getErrorHandler()
{
return $this->get('errorHandler');
}
6.getRequest方法,返回请求组件
/**
* 请求组件
*/
public function getRequest()
{
return $this->get('request');
}
7.getResponse方法,返回响应组件实例
/**
* 响应组件
*/
public function getResponse()
{
return $this->get('response');
}
8. getSession方法,返回session组件实例
/**
* session组件
*/
public function getSession()
{
return $this->get('session');
}
9. getUser方法,返回user实例
/**
* user组件
*/
public function getUser()
{
return $this->get('user');
}
10.coreComponents方法,返回组件配置数组
/**
* 返回组件数组配置
*/
public function coreComponents()
{
return array_merge(parent::coreComponents(), [
'request' => ['class' => 'yii\web\Request'],
'response' => ['class' => 'yii\web\Response'],
'session' => ['class' => 'yii\web\Session'],
'user' => ['class' => 'yii\web\User'],
'errorHandler' => ['class' => 'yii\web\ErrorHandler'],
]);
}
总结:
阅读了4个属性和10个方法:
- $defaultRoute 默认路由
- $catchAll 指定的一个控制住操作,当应用处于维护模式时,用来处理所有请求
- $controller 当前控制器实例
- $_homeUrl 主页url
- bootstrap方法,启动方法
- handleRequest方法,处理请求
- getHomeUrl方法,返回主页url
- setHomeURL方法,设置主页url
- getErrorHandler方法,返回错误处理组件
- getRequest方法,返回请求组件
- getResponse方法,返回响应组件实例
- getSession方法,返回session组件实例
- getUser方法,返回user实例
- coreComponents方法,返回组件配置数组