目录
一、构造函数
1. 挂载app实例
2. 状态初始化
3. 预初始化
4. 注册错误处理程序
5. 调用父类的构造函数
/**
* 构造函数
* 1. 挂载app实例
* 2. 状态初始化
* 3. 预初始化
* 4. 注册错误处理程序
* 5. 调用父类的构造函数
*/
public function __construct($config = [])
{
//挂载app实例
Yii::$app = $this;
static::setInstance($this);
//状态初始化
$this->state = self::STATE_BEGIN;
//预初始化
$this->preInit($config);
//注册错误处理程序
$this->registerErrorHandler($config);
Component::__construct($config);
}
二、preInit方法,检查和初始化应用程序配置
1. 检查应用程序id
2. 检查并设置basePath,设置@app别名
3. 设置@vendor别名
4. 设置@runtime别名
5. 时区设置
6. 设置容器属性
7. 合并核心组件与自定义组件
/**
* 检查和初始化应用程序配置
* 1. 检查应用程序id
* 2. 检查并设置basePath,设置@app别名
* 3. 设置@vendor别名
* 4. 设置@runtime别名
* 5. 时区设置
* 6. 设置容器属性
* 7. 合并核心组件与自定义组件
*/
public function preInit(&$config)
{
//检查应用程序id
if (!isset($config['id'])) {
throw new InvalidConfigException('The "id" configuration for the Application is required.');
}
//检查并设置basePath
if (isset($config['basePath'])) {
//设置@app别名
$this->setBasePath($config['basePath']);
unset($config['basePath']);
} else {
throw new InvalidConfigException('The "basePath" configuration for the Application is required.');
}