應用結構
- 入口指令碼:終端使用者能直接訪問的 PHP 指令碼, 負責啟動一個請求處理週期。
- 應用:能全域性範圍內訪問的物件, 管理協調元件來完成請求.
- 應用元件:在應用中註冊的物件, 提供不同的功能來完成請求。
- 模組:包含完整 MVC 結構的獨立包, 一個應用可以由多個模組組建。
- 過濾器:控制器在處理請求之前或之後 需要觸發執行的程式碼。
- 小部件:可嵌入到檢視中的物件, 可包含控制器邏輯,可被不同檢視重複呼叫。
生命週期
- 使用者向入口指令碼 web/index.php 發起請求。
- 入口指令碼載入應用配置並建立一個應用 例項去處理請求。
- 應用通過請求元件解析請求的 路由。
- 應用建立一個控制器例項去處理請求。
- 控制器建立一個動作例項並針對操作執行過濾器。
- 如果任何一個過濾器返回失敗,則動作取消。
- 如果所有過濾器都通過,動作將被執行。
- 動作會載入一個資料模型,或許是來自資料庫。
- 動作會渲染一個檢視,把資料模型提供給它。
- 渲染結果返回給響應元件。
- 響應元件傳送渲染結果給使用者瀏覽器。
模型
yii\base\Model
被用於普通模型類的父類並與資料表無關yii\db\ActiveRecord
與資料表有關聯,亦繼承Model
類, 增加了資料庫處理- 活動記錄是物件導向、功能強大的訪問和運算元據庫資料的方式
Yii::$app
代表應用例項,它是一個全域性可訪問的單例, 同時也是一個服務定位器
控制器
操作是終端使用者可以直接訪問並執行的物件,被組織在控制器中。
- 建立操作作為控制器的一部分去處理特定請求
- 建立了一個檢視去構造響應內容
檢視
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 被設計成高度可定製和可擴充套件的程式碼生成工具