Zend framework處理一個http請求的流程分析

1, 首先是bootstrap過程,初始化程序里用到的資源
2, 創(chuàng)建一個Zend_Controller_Front實體,實現(xiàn)front controller模式,這個實體類會負(fù)責(zé)將http請求派遣到恰當(dāng)?shù)腸ontroller的action里。
3, Front controller會創(chuàng)建倆個對象來封裝http請求和http回復(fù),分別是Zend_Controller_Request_Http和Zend_Controller_Response_Http
4, Front controller會創(chuàng)建倆個對象來實現(xiàn)url尋路和派遣,分別是routing和dispatcher, 分別負(fù)責(zé)找到指定url應(yīng)該執(zhí)行的控制器和動作,和載入對應(yīng)的程序文件并執(zhí)行對應(yīng)的方法。
5, 通過controller的plugin機制,Zend_Controller_Action_ViewRenderer會為controller的實體類創(chuàng)建一個view屬性,這個view是一個Zend_View的實體對象。它還負(fù)責(zé)在controller action請求處理完成后,將相應(yīng)的template文件render呈現(xiàn)到http response對象里。最后response對象的內(nèi)容會由Front Controller輸出到瀏覽器。
6, 在第五步中,雖然template文件是由ViewRender助手對象來定位的,但是是由Zend_VIew的一個成員函數(shù)執(zhí)行的(include進(jìn)這個template文件),所以在Controller里屬性里view對象的所有屬性和成員函數(shù)在template文件里都可以被使用。
這樣一個http請求的生命周期就結(jié)束了,瀏覽器獲得了內(nèi)容。在controller的action給view指定要呈現(xiàn)的變量時,它一般會通過Zend_Db_Table與數(shù)據(jù)庫交互,獲得數(shù)據(jù)。
與數(shù)據(jù)庫交互處理數(shù)據(jù)稱為business logic, template文件里也會包涵簡單的循環(huán)等邏輯,這個稱為display logic。
在MVC實現(xiàn)中,Model負(fù)責(zé)處理business logic, View負(fù)責(zé)處理display logic,而Controller則負(fù)責(zé)協(xié)調(diào)這倆部分,從而Controller的代碼應(yīng)該盡量簡潔,它只是作為一個agent存在的。
相關(guān)文章
PHP使用trim函數(shù)去除字符串左右空格及特殊字符實例
這篇文章主要介紹了PHP使用trim函數(shù)去除字符串左右空格及特殊字符的用法,結(jié)合實例簡單分析了trim函數(shù)不帶附加參數(shù)去除空格及使用附加參數(shù)去除指定字符的使用技巧,需要的朋友可以參考下2016-01-01
php利用scws實現(xiàn)mysql全文搜索功能的方法
這篇文章主要介紹了php利用scws實現(xiàn)mysql全文搜索功能的方法,可通過scws分詞插件的擴展來實現(xiàn)MySQL全文搜索功能,是非常實用的技巧,需要的朋友可以參考下2014-12-12
phpMyAdmin 鏈接表的附加功能尚未激活問題的解決方法(已測)
今天幫客戶配置phpmyadmin,一直有“鏈接表的附加功能尚未激活”的問題,登陸phpmyadmin后,會在底部顯示“鏈接表的附加功能尚未激活。要查出原因,請點擊此處。”的提示。2012-03-03
PHP在線調(diào)試執(zhí)行的實現(xiàn)方法(附demo源碼)
這篇文章主要介紹了PHP在線調(diào)試執(zhí)行的實現(xiàn)方法,實例分析了PHP實現(xiàn)在線調(diào)試運行的原理,步驟與具體實現(xiàn)代碼,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04

