Yii2 應用概述

pardon110發表於2019-07-19

應用結構

  • 入口指令碼:終端使用者能直接訪問的 PHP 指令碼, 負責啟動一個請求處理週期。
  • 應用:能全域性範圍內訪問的物件, 管理協調元件來完成請求.
  • 應用元件:在應用中註冊的物件, 提供不同的功能來完成請求。
  • 模組:包含完整 MVC 結構的獨立包, 一個應用可以由多個模組組建。
  • 過濾器:控制器在處理請求之前或之後 需要觸發執行的程式碼。
  • 小部件:可嵌入到檢視中的物件, 可包含控制器邏輯,可被不同檢視重複呼叫。
    Yii2 應用的靜態結構

生命週期

  1. 使用者向入口指令碼 web/index.php 發起請求。
  2. 入口指令碼載入應用配置並建立一個應用 例項去處理請求。
  3. 應用通過請求元件解析請求的 路由。
  4. 應用建立一個控制器例項去處理請求。
  5. 控制器建立一個動作例項並針對操作執行過濾器。
  6. 如果任何一個過濾器返回失敗,則動作取消。
  7. 如果所有過濾器都通過,動作將被執行。
  8. 動作會載入一個資料模型,或許是來自資料庫。
  9. 動作會渲染一個檢視,把資料模型提供給它。
  10. 渲染結果返回給響應元件。
  11. 響應元件傳送渲染結果給使用者瀏覽器。

請求生命週期

模型

  • yii\base\Model 被用於普通模型類的父類並與資料表無關
  • yii\db\ActiveRecord 與資料表有關聯,亦繼承 Model 類, 增加了資料庫處理
    • 活動記錄是物件導向、功能強大的訪問和運算元據庫資料的方式
  • Yii::$app 代表應用例項,它是一個全域性可訪問的單例, 同時也是一個服務定位器

控制器

操作是終端使用者可以直接訪問並執行的物件,被組織在控制器中。

  1. 建立操作作為控制器的一部分去處理特定請求
  2. 建立了一個檢視去構造響應內容

檢視

  • Widget 展示類
...
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'code',
            'name',
            'population',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
  • yii\data\Pagination 資料分頁器
  • yii\widgets\LinkPager  分頁連結生成器

模組

  • 模組被當成小應用主體來看待,不能單獨部署,必須屬於某個應用主體
  • 模組化,對業務邏輯進行分層,使用需在應用 web 配置內註冊並設定引導類

Gii模組

  • 配置模組引導模組資訊
  • 可生成 model,crud,controller,form,module,extension
  • Gii 被設計成高度可定製和可擴充套件的程式碼生成工具

相關文章