學習Yii(2)

Yii擁有很好的手冊,仍是中文的,官方的手冊很詳細。仍是應該好好看一下。今天就開始跟着項目代碼調試。php

上次看到入口腳本,學習必定要快,要用心,抓住時間。否則時間拖久了就忘了。延續不上,大打折扣。並且要搞清楚前後順序,該掌握的掌握了再來學習該學的東西,否則也容易學不下去。web

應用數據庫

在MVC基礎上多了一個application,用來處理請求分發給相應的Controller,那就是這個應用。設計模式

應用由入口腳本建立爲單例對象。能夠在任何地方經過Yii:app()訪問數組

配置通常保存在config/main.php中,將配置傳給應用構造器$app = Yii:createWebApplication($configFile);瀏覽器

應用組件服務器

應用能夠經過配置components屬性來自定義用到的任何組件及其類屬性值。架構

應用是CWebApplication的實例,由於剛開始看,看到這仍是不明白,我只知道這是個類。對於組件在哪也不清楚。app

CWebApplication類預約義了核心組件,不少功能。框架

應用生命週期。

CApplication::preinit()初始化→設置自動加載和錯誤處理→註冊核心類組件→加載應用配置→CApplication::inti()初始化→觸發onBeginRequest事件→處理用戶請求→觸發onEndRequest事件

這些類的方法還都須要看,如今沒時間去看啊。先走項目。

兩天走走項目,發現架構挺簡單的,結構比較清楚。框架部分有不少看不懂的地方,繼續回來看框架。

控制器

通常繼承自CController或者其子類(在framework/web/CController.php)當用戶請求是,由應用建立,控制器運行執行請求的動做Action,動做Action引入模型Model並渲染對應視圖。這些用過框架的人都很好理解,若是沒用過框架就基本沒法理解。

動做Action就是以action開頭的控制器類方法。

控制器有一個默認的動做,在用戶未指定動做時默認執行,默認動做爲index,至關於沒有指定動做 執行index方法。能夠經過CController::defaultAction修改。

接下來是路由,定義路由規則。也就是瀏覽器裏的url,默認大小寫敏感,能夠設置。

格式爲:服務器地址/控制器ID(控制器名)/動做ID(去除action前綴的方法名)

開發過程當中應用有不少的模塊Module,路由爲moduleID/controllerID/actionID

實例化控制器

CWebApplication處理請求時建立實例。$catchAllRequest 用戶指定的控制器將被忽略,用於設置維護狀態的靜態提示頁面。

$controllerMap數組用於寫入控制器ID。

使用了模塊後,應用將先檢查是不是模塊中的控制器,若是存在,模塊實例首先被建立,而後建立該模塊中的控制器實例。

動做

以action開頭的一個方法,能夠定義一個動做類,實例化動做類,動做能夠被複用。

寫一個方法重寫CController下的actions方法。

過濾器

一個動做能夠有多個過濾器,配置在控制器動做執行前或者執行後,在過濾器列表中按順序執行,定義方法名以filter開頭。

須要重寫CController的filters()方法。過濾器,+號說明應用於這些動做、-號說明應用於除了這些以外的動做,沒有符號將用於所有的動做。

模型

CModel的實例或其子類的實例。

是單獨的數據對象。每一個字段對應模型中的一個屬性。每一個屬性都有一個標籤label,能夠經過一些規則驗證。

表單模型和Active Record

表單模型是CFormModel的實例,用於保持從用戶輸入獲取的數據。獲取→使用→丟棄

Active Record AR是一種用於經過面向對象的風格抽象數據庫訪問的設計模式。時候CActiveRecord的實例化。表明數據表中的一行數據。字段對應AR對象的屬性。

視圖

rander渲染視圖名字,視圖名字和視圖腳本名一致。通常在protected/views/ControllerID目錄下。也就是在對應的Controlle名文件夾下。視圖是php腳本文件。在視圖內部能夠用$this來訪問控制器類實例。拉去控制器的任何屬性。

$this->render()以數組的方式傳遞數據到視圖裏。提取參數到變量,直接在視圖裏訪問。

佈局

通用部分。header footer..等等。

protected/views/layouts/main.php是默認佈局文件。

小物件

CWidget類或其子類的實例,一般內嵌於一個視圖產生一些複雜而獨立的用戶界面,好比日曆小物件。

主要用於表現數據的組件。增長可複用。小物件像控制器同樣能夠擁有本身的視圖。經過調用CWidget::render()渲染。沒有文件佈局。

系統視圖

系統視圖渲染用於展現Yii的錯誤提示和日誌信息。

相關文章
相關標籤/搜索