安裝 YII 后,就有了一個可運行的 Yii 應用, 根據配置的不同,可以通過 http://hostname/basic/web/index.php 或 http://hostname/index.php 訪問。? ? ? ? (推薦學習:yii使用教程)
本章節將介紹應用的內建功能,如何組織代碼, 以及一般情況下應用如何處理請求。
信息: 為簡單起見,在整個“入門”板塊都假定你已經把 basic/web 設為 Web 服務器根目錄并配置完畢, 你訪問應用的地址會是 http://hostname/index.php 或類似的。 請按需調整 URL。
注意項目模板和框架完全不同,安裝完之后全都歸你了。你可以根據你的需要自由的添加或刪除代碼和 修改全部的。
功能
一個安裝完的基本應用包含四頁:
主頁,當你訪問 http://hostname/index.php 時顯示,“About”頁,“Contact”頁, 顯示一個聯系表單,允許終端用戶通過 Email 聯系你,“Login”頁, 顯示一個登錄表單,用來驗證終端用戶。試著用“admin/admin”登錄, 你可以看到當前是登錄狀態,已經可以“退出登錄”了。
這些頁面使用同一個頭部和尾部。 頭部包含了一個可以在不同頁面間切換的導航欄。
在瀏覽器底部可以看到一個工具欄。這是 Yii 提供的很有用的調試工具, 可以記錄并顯示大量的調試信息,例如日志信息,響應狀態,數據庫查詢等等。
除了 web 應用程序,還有一個控制臺腳本叫 yii ,它位于應用程序根目錄。 它可以用于程序的后臺運行和維護任務,在控制臺應用程序章節 中描述。
應用結構?
應用中最重要的目錄和文件(假設應用根目錄是 basic):
basic/??????????????????應用根目錄 ????composer.json???????Composer?配置文件,?描述包信息 ????config/?????????????包含應用配置及其它配置 ????????console.php?????控制臺應用配置信息 ????????web.php?????????Web?應用配置信息 ????commands/???????????包含控制臺命令類 ????controllers/????????包含控制器類 ????models/?????????????包含模型類 ????runtime/????????????包含?Yii?在運行時生成的文件,例如日志和緩存文件 ????vendor/?????????????包含已經安裝的?Composer?包,包括?Yii?框架自身 ????views/??????????????包含視圖文件 ????web/????????????????Web?應用根目錄,包含?Web?入口文件 ????????assets/?????????包含?Yii?發布的資源文件(javascript?和?css) ????????index.php???????應用入口文件 ????yii?????????????????Yii?控制臺命令執行腳本
一般來說,應用中的文件可被分為兩類:在 basic/web 下的和在其它目錄下的。 前者可以直接通過 HTTP 訪問(例如瀏覽器),后者不能也不應該被直接訪問。
Yii 實現了模型-視圖-控制器 (mvc)設計模式,這點在上述目錄結構中也得以體現。 models 目錄包含了所有模型類, views 目錄包含了所有視圖腳本, controllers 目錄包含了所有控制器類。
以下圖表展示了一個應用的靜態結構:
每個應用都有一個入口腳本 web/index.php,這是整個應用中唯一可以訪問的 PHP 腳本。 入口腳本接受一個 Web 請求并創建應用實例去處理它。 應用在它的組件輔助下解析請求, 并分派請求至 MVC 元素。視圖使用小部件 去創建復雜和動態的用戶界面。
請求生命周期
以下圖表展示了一個應用如何處理請求:
用戶向入口腳本 web/index.php 發起請求。
入口腳本加載應用配置并創建一個應用 實例去處理請求。
應用通過請求組件解析請求的路由。
應用創建一個控制器實例去處理請求。
控制器創建一個動作實例并針對操作執行過濾器。
如果任何一個過濾器返回失敗,則動作取消。
如果所有過濾器都通過,動作將被執行。
動作會加載一個數據模型,或許是來自數據庫。
動作會渲染一個視圖,把數據模型提供給它。
渲染結果返回給響應組件。
響應組件發送渲染結果給用戶瀏覽器。