YII2.0生存時間簡單總結

一.初始化

(一)構造函數

  1. Yii::$app->loadedModules 將自己裝入這個屬性中[屬性的屬性]
  2. 初始化配置[路徑;時區;將核心組件裝入components配置中]
  3. 注入異常處理類[涉及到了_components[存對象]和_definitions[存id=>和各種屬性包括class]以及各種創建對象的方法]
  4. 通過Yii::configure($this, $config);將所有配置中的屬性加載到 yii\web\Application實例中
  5. 從子類中執行init()

(二)init()

  1. 設置網址目錄別名

  2. 再次加載別名

  3. 加載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.結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章