一.初始化
(一)構造函數
- Yii::$app->loadedModules 將自己裝入這個屬性中[屬性的屬性]
- 初始化配置[路徑;時區;將核心組件裝入components配置中]
- 注入異常處理類[涉及到了_components[存對象]和_definitions[存id=>和各種屬性包括class]以及各種創建對象的方法]
- 通過Yii::configure($this, $config);將所有配置中的屬性加載到 yii\web\Application實例中
- 從子類中執行init()
(二)init()
-
設置網址目錄別名
-
再次加載別名
-
加載bootstrap => log
二 . run
(一).yii\web\Application::handleRequest處理請求
1.將當前請求解析爲路由和相關參數
2.runAction
1.createController
1.獲取模塊Module
2.遞歸獲取控制器[在創建控制器的時候就實例化控制器的方法了,但是還未執行beforeAction]
2.通過獲取的控制器和方法處理 業務[獲取執行結果]
1.yii\base\Module::runAction中$result = $controller->runAction($actionID, $params);後纔會執yii\base\Controller::runAction
1.創建行爲 並將創建的行爲放入Yii::$app->requestedAction
2.執行module的beforeAction 只要有一個是false就不再執行控制器的beforeAction
3.執行控制器的BeforeAction,放回true才執行下邊,否則直接跳出
4.$action->runWithParams($params)執行控制器方法並獲取結果
5.$result = $this->afterAction($action, $result);執行控制器的afterAction[業務控制器會覆蓋父類的]
6.執行module中的afterAction
3.將上邊的結果給響應對象的data屬性[如果上邊結果不爲null]
3.響應!
4.結束