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

1. YII 應用結(jié)構(gòu)
參照模型-視圖-控制器 (MVC)

入口腳本:終端用戶能直接訪問的 PHP 腳本, 負責啟動一個請求處理周期。
應用:能全局范圍內(nèi)訪問的對象构舟, 管理協(xié)調(diào)組件來完成請求.
應用組件:在應用中注冊的對象芥喇, 提供不同的功能來完成請求靴迫。
模塊:包含完整 MVC 結(jié)構(gòu)的獨立包佳镜, 一個應用可以由多個模塊組建启盛。
過濾器:控制器在處理請求之前或之后 需要觸發(fā)執(zhí)行的代碼霜第。
小部件:可嵌入到視圖中的對象葛家, 可包含控制器邏輯,可被不同視圖重復調(diào)用泌类。
application-structure.png
2. 入口腳本主要完成以下工作
* 定義全局常量癞谒;
* 注冊 [Composer 自動加載器](http://getcomposer.org/doc/01-basic-usage.md#autoloading)底燎;
* 包含 [Yii](https://www.yiichina.com/doc/api/2.0/yii) 類文件;
* 加載應用配置弹砚;
* 創(chuàng)建一個[應用](https://www.yiichina.com/doc/guide/2.0/structure-applications)實例并配置;
* 調(diào)用 [yii\base\Application::run()](https://www.yiichina.com/doc/api/2.0/yii-base-application#run()-detail) 來處理請求双仍。
3. 應用主體

應用主體是管理 Yii 應用系統(tǒng)整體結(jié)構(gòu)和生命周期的對象
Yii有兩種應用主體: 網(wǎng)頁應用主體 和 控制臺應用主體

應用主體中 重要的屬性要配置:

id  屬性用來區(qū)分其他應用的唯一標識ID。主要給程序使用桌吃。
basePath 指定該應用的根目錄朱沃。 根目錄包含應用系統(tǒng)所有受保護的源代碼
aliases 該屬性允許你用一個數(shù)組定義多個 別名。
bootstrap 這個屬性很實用茅诱,它允許你用數(shù)組指定啟動階段 bootstrapping process 需要運行的組件逗物。

屬性中的每個組件需要指定以下一項:
    * 應用 組件 ID.
    * 模塊 ID.
    * 類名.
    * 配置數(shù)組.
    * 創(chuàng)建并返回一個組件的無名稱函數(shù).

catchAll 該屬性僅 Web applications 網(wǎng)頁應用支持。 它指定一個要處理所有用戶請求的 控制器方法瑟俭。通常在維護模式下使用
components 它允許你注冊多個在其他地方使用的 應用組件.
controllerMap 該屬性允許你指定一個控制器 ID 到任意控制器類
controllerNamespace 該屬性指定控制器類默認的命名空間翎卓,默認為app\controllers
language 該屬性指定應用展示給終端用戶的語言, 默認為 en 標識英文
modules 該屬性指定應用所包含的 模塊摆寄。
name 該屬性指定你可能想展示給終端用戶的應用名稱
params 該屬性為一個數(shù)組失暴,指定可以全局訪問的參數(shù)
sourceLanguage 該屬性指定應用代碼的語言,默認為 'en-US' 標識英文
timeZone 修改時區(qū)
charset 修改字符集
defaultRoute 配置默認路由
……

應用事件:

EVENT_BEFORE_REQUEST #該事件在應用處理請求 before 之前
EVENT_AFTER_REQUEST #該事件在應用處理請求 after 之后但在返回響應 before 之前觸發(fā)
EVENT_BEFORE_ACTION #該事件在每個 控制器動作 運行before之前會被觸發(fā)
EVENT_AFTER_ACTION  #該事件在每個 控制器動作 運行 after 之后會被觸發(fā)
4. 應用主體生命周期
application-lifecycle.png

當運行 入口腳本 處理請求時微饥, 應用主體會經(jīng)歷以下生命周期:

入口腳本加載應用主體配置數(shù)組逗扒。
入口腳本創(chuàng)建一個應用主體實例:
調(diào)用 preInit() 配置幾個高級別應用主體屬性, 比如 basePath畜号。
注冊 error handler 錯誤處理方法缴阎。
配置應用主體屬性。
調(diào)用 init() 初始化简软,該函數(shù)會調(diào)用 bootstrap() 運行引導啟動組件蛮拔。
入口腳本調(diào)用 yii\base\Application::run() 運行應用主體:
觸發(fā) EVENT_BEFORE_REQUEST 事件。
處理請求:解析請求 路由 和相關(guān)參數(shù)痹升; 創(chuàng)建路由指定的模塊建炫、控制器和動作對應的類,并運行動作疼蛾。
觸發(fā) EVENT_AFTER_REQUEST 事件肛跌。
發(fā)送響應到終端用戶。
入口腳本接收應用主體傳來的退出狀態(tài)并完成請求的處理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末察郁,一起剝皮案震驚了整個濱河市衍慎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皮钠,老刑警劉巖稳捆,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異麦轰,居然都是意外死亡乔夯,警方通過查閱死者的電腦和手機砖织,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來末荐,“玉大人侧纯,你說我怎么就攤上這事〖自啵” “怎么了眶熬?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長块请。 經(jīng)常有香客問我聋涨,道長,這世上最難降的妖魔是什么负乡? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮脊凰,結(jié)果婚禮上抖棘,老公的妹妹穿的比我還像新娘。我一直安慰自己狸涌,他們只是感情好切省,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帕胆,像睡著了一般朝捆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懒豹,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天芙盘,我揣著相機與錄音,去河邊找鬼脸秽。 笑死儒老,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的记餐。 我是一名探鬼主播驮樊,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼片酝!你這毒婦竟也來了囚衔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雕沿,失蹤者是張志新(化名)和其女友劉穎练湿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦炊,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鞠鲜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年宁脊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤姆。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡榆苞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霞捡,到底是詐尸還是另有隱情坐漏,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布碧信,位于F島的核電站赊琳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砰碴。R本人自食惡果不足惜躏筏,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呈枉。 院中可真熱鬧趁尼,春花似錦、人聲如沸猖辫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啃憎。三九已至芝囤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辛萍,已是汗流浹背悯姊。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贩毕,地道東北人挠轴。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像耳幢,于是被迫代替她去往敵國和親岸晦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 入口腳本 入口腳本主要完成以下工作 定義全局常量睛藻; 注冊 Composer 自動加載器[http://getcom...
    發(fā)胖的向日葵閱讀 430評論 0 0
  • 通過歸檔文件安裝或者通過composer下載放在自己的項目中启上,接下來開始使用yii2。 認識yii2.0 什么是y...
    套路師閱讀 827評論 0 0
  • yii結(jié)構(gòu) 用MVC設(shè)計模式來組織店印,模型(model)表示數(shù)據(jù)格式冈在、業(yè)務(wù)邏輯、規(guī)則等按摘,視圖(view)輸出展示模型...
    小羊羊愛吃飯閱讀 1,114評論 0 2
  • 前言 本文主要分析Yii2應用的啟動包券、運行的過程纫谅,主要包括以下三部分:入口腳本、啟動應用溅固、運行應用付秕。 入口腳本 啟...
    gurlan閱讀 777評論 0 0
  • yii2開發(fā)中19條推薦實踐(阿北總結(jié)) 環(huán)境說明 服務(wù)器環(huán)境: CentOS 開發(fā)環(huán)境及IDE:mac & ph...
    nnlzx閱讀 776評論 0 2