鍍金池/ 教程/ PHP/ 運行應用
查詢構(gòu)建器
HTTP 緩存
單元測試
資源
數(shù)據(jù)庫遷移
Fixtures
收集列表輸入
認證
助手類
緩存
數(shù)據(jù)緩存
最佳安全實踐
響應格式
使用 Gii 生成代碼
服務定位器
性能優(yōu)化
資源
多模型的復合表單
控制器
Html 幫助類
運行機制概述
快速入門
屬性(Property)
使用表單
配置測試環(huán)境
數(shù)據(jù)提供者
使用數(shù)據(jù)庫
授權
輸入驗證
類自動加載(Autoloading)
版本
響應
Sessions 和 Cookies
數(shù)組助手類
創(chuàng)建你自己的應用程序結(jié)構(gòu)
文件上傳
路由
收發(fā)郵件
模型
小部件
更上一層樓
頁面緩存
請求
片段緩存
排序
處理密碼
數(shù)據(jù)小部件
模塊
事件
控制器
從 Yii 1.1 升級
應用組件
驗收測試
入口腳本
總覽
Url 幫助類
行為
速率限制
控制臺命令
依賴注入容器
視圖
功能測試
錯誤處理
過濾器
主題
應用主體
引入第三方代碼
共享托管環(huán)境
測試
擴展
路由
使用模板引擎
核心驗證器(Core Validators)
分頁
數(shù)據(jù)庫訪問 (DAO)
配置
創(chuàng)建表單
日志
安裝 Yii
客戶端腳本使用
組件(Component)
說聲 Hello
運行應用
數(shù)據(jù)格式器
認證
錯誤處理
別名(Aliases)
Active Record
啟動引導(Bootstrapping)
國際化

運行應用

安裝 Yii 后,就有了一個可運行的 Yii 應用,根據(jù)配置的不同,可以通過 http://hostname/basic/web/index.phphttp://hostname/index.php 訪問。本章節(jié)將介紹應用的內(nèi)建功能,如何組織代碼,以及一般情況下應用如何處理請求。

補充:為簡單起見,在整個“入門”板塊都假定你已經(jīng)把 basic/web 設為 Web 服務器根目錄并配置完畢,你訪問應用的地址會是 http://lostname/index.php 或類似的。請按需調(diào)整 URL。

功能

一個安裝完的基本應用包含四頁:

  • 主頁,當你訪問 http://hostname/index.php 時顯示,
  • “About” 頁,
  • “Contact” 頁, 顯示一個聯(lián)系表單,允許終端用戶通過 Email 聯(lián)系你,
  • “Login” 頁, 顯示一個登錄表單,用來驗證終端用戶。試著用 “admin/admin” 登錄,你可以看到當前是登錄狀態(tài),已經(jīng)可以“退出登錄”了。

這些頁面使用同一個頭部和尾部。頭部包含了一個可以在不同頁面間切換的導航欄。

在瀏覽器底部可以看到一個工具欄。這是 Yii 提供的很有用的調(diào)試工具,可以記錄并顯示大量的調(diào)試信息,例如日志信息,響應狀態(tài),數(shù)據(jù)庫查詢等等。

應用結(jié)構(gòu)

應用中最重要的目錄和文件(假設應用根目錄是 basic):

basic/                  應用根目錄
    composer.json       Composer 配置文件, 描述包信息
    config/             包含應用配置及其它配置
        console.php     控制臺應用配置信息
        web.php         Web 應用配置信息
    commands/           包含控制臺命令類
    controllers/        包含控制器類
    models/             包含模型類
    runtime/            包含 Yii 在運行時生成的文件,例如日志和緩存文件
    vendor/             包含已經(jīng)安裝的 Composer 包,包括 Yii 框架自身
    views/              包含視圖文件
    web/                Web 應用根目錄,包含 Web 入口文件
        assets/         包含 Yii 發(fā)布的資源文件(javascript 和 css)
        index.php       應用入口文件
    yii                 Yii 控制臺命令執(zhí)行腳本

一般來說,應用中的文件可被分為兩類:在 basic/web 下的和在其它目錄下的。前者可以直接通過 HTTP 訪問(例如瀏覽器),后者不能也不應該被直接訪問。

Yii 實現(xiàn)了模型-視圖-控制器 (MVC)設計模式,這點在上述目錄結(jié)構(gòu)中也得以體現(xiàn)。 models 目錄包含了所有模型類,views 目錄包含了所有視圖腳本,controllers 目錄包含了所有控制器類

以下圖表展示了一個應用的靜態(tài)結(jié)構(gòu):

http://wiki.jikexueyuan.com/project/yii-2.0-guide/images/application-structure.png" alt="應用靜態(tài)結(jié)構(gòu)" />

每個應用都有一個入口腳本 web/index.php,這是整個應用中唯一可以訪問的 PHP 腳本。入口腳本接受一個 Web 請求并創(chuàng)建應用實例去處理它。 應用在它的組建輔助下解析請求,并分派請求至 MVC 元素。視圖使用小部件去創(chuàng)建復雜和動態(tài)的用戶界面。

請求生命周期

以下圖表展示了一個應用如何處理請求:

http://wiki.jikexueyuan.com/project/yii-2.0-guide/images/request-lifecycle.png" alt="請求生命周期" />

  1. 用戶向入口腳本 web/index.php 發(fā)起請求。
  2. 入口腳本加載應用配置并創(chuàng)建一個應用實例去處理請求。
  3. 應用通過請求組件解析請求的路由。
  4. 應用創(chuàng)建一個控制器實例去處理請求。
  5. 控制器創(chuàng)建一個操作實例并針對操作執(zhí)行過濾器。
  6. 如果任何一個過濾器返回失敗,則操作退出。
  7. 如果所有過濾器都通過,操作將被執(zhí)行。
  8. 操作會加載一個數(shù)據(jù)模型,或許是來自數(shù)據(jù)庫。
  9. 操作會渲染一個視圖,把數(shù)據(jù)模型提供給它。
  10. 渲染結(jié)果返回給響應組件。
  11. 響應組件發(fā)送渲染結(jié)果給用戶瀏覽器。