運(yùn)行應(yīng)用(Running Applications)

2018-02-24 15:40 更新

運(yùn)行應(yīng)用

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

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

功能

一個(gè)安裝完的基本應(yīng)用包含四頁(yè):

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

這些頁(yè)面使用同一個(gè)頭部和尾部。頭部包含了一個(gè)可以在不同頁(yè)面間切換的導(dǎo)航欄。

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

應(yīng)用結(jié)構(gòu)

應(yīng)用中最重要的目錄和文件(假設(shè)應(yīng)用根目錄是?basic):

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

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

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

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

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

請(qǐng)求生命周期

以下圖表展示了一個(gè)應(yīng)用如何處理請(qǐng)求:

  1. 用戶向入口腳本?web/index.php?發(fā)起請(qǐng)求。
  2. 入口腳本加載應(yīng)用配置并創(chuàng)建一個(gè)應(yīng)用實(shí)例去處理請(qǐng)求。
  3. 應(yīng)用通過請(qǐng)求組件解析請(qǐng)求的路由。
  4. 應(yīng)用創(chuàng)建一個(gè)控制器實(shí)例去處理請(qǐng)求。
  5. 控制器創(chuàng)建一個(gè)操作實(shí)例并針對(duì)操作執(zhí)行過濾器。
  6. 如果任何一個(gè)過濾器返回失敗,則操作退出。
  7. 如果所有過濾器都通過,操作將被執(zhí)行。
  8. 操作會(huì)加載一個(gè)數(shù)據(jù)模型,或許是來(lái)自數(shù)據(jù)庫(kù)。
  9. 操作會(huì)渲染一個(gè)視圖,把數(shù)據(jù)模型提供給它。
  10. 渲染結(jié)果返回給響應(yīng)組件。
  11. 響應(yīng)組件發(fā)送渲染結(jié)果給用戶瀏覽器。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)