Zend framework處理一個(gè)http請(qǐng)求的流程分析
1, 首先是bootstrap過(guò)程,初始化程序里用到的資源
2, 創(chuàng)建一個(gè)Zend_Controller_Front實(shí)體,實(shí)現(xiàn)front controller模式,這個(gè)實(shí)體類(lèi)會(huì)負(fù)責(zé)將http請(qǐng)求派遣到恰當(dāng)?shù)腸ontroller的action里。
3, Front controller會(huì)創(chuàng)建倆個(gè)對(duì)象來(lái)封裝http請(qǐng)求和http回復(fù),分別是Zend_Controller_Request_Http和Zend_Controller_Response_Http
4, Front controller會(huì)創(chuàng)建倆個(gè)對(duì)象來(lái)實(shí)現(xiàn)url尋路和派遣,分別是routing和dispatcher, 分別負(fù)責(zé)找到指定url應(yīng)該執(zhí)行的控制器和動(dòng)作,和載入對(duì)應(yīng)的程序文件并執(zhí)行對(duì)應(yīng)的方法。
5, 通過(guò)controller的plugin機(jī)制,Zend_Controller_Action_ViewRenderer會(huì)為controller的實(shí)體類(lèi)創(chuàng)建一個(gè)view屬性,這個(gè)view是一個(gè)Zend_View的實(shí)體對(duì)象。它還負(fù)責(zé)在controller action請(qǐng)求處理完成后,將相應(yīng)的template文件render呈現(xiàn)到http response對(duì)象里。最后response對(duì)象的內(nèi)容會(huì)由Front Controller輸出到瀏覽器。
6, 在第五步中,雖然template文件是由ViewRender助手對(duì)象來(lái)定位的,但是是由Zend_VIew的一個(gè)成員函數(shù)執(zhí)行的(include進(jìn)這個(gè)template文件),所以在Controller里屬性里view對(duì)象的所有屬性和成員函數(shù)在template文件里都可以被使用。
這樣一個(gè)http請(qǐng)求的生命周期就結(jié)束了,瀏覽器獲得了內(nèi)容。在controller的action給view指定要呈現(xiàn)的變量時(shí),它一般會(huì)通過(guò)Zend_Db_Table與數(shù)據(jù)庫(kù)交互,獲得數(shù)據(jù)。
與數(shù)據(jù)庫(kù)交互處理數(shù)據(jù)稱(chēng)為business logic, template文件里也會(huì)包涵簡(jiǎn)單的循環(huán)等邏輯,這個(gè)稱(chēng)為display logic。
在MVC實(shí)現(xiàn)中,Model負(fù)責(zé)處理business logic, View負(fù)責(zé)處理display logic,而Controller則負(fù)責(zé)協(xié)調(diào)這倆部分,從而Controller的代碼應(yīng)該盡量簡(jiǎn)潔,它只是作為一個(gè)agent存在的。
- Zend Framework實(shí)現(xiàn)多文件上傳功能實(shí)例
- zend framework文件上傳功能實(shí)例代碼
- windows下zendframework項(xiàng)目環(huán)境搭建(通過(guò)命令行配置)
- zend framework配置操作數(shù)據(jù)庫(kù)實(shí)例分析
- 非常好用的Zend Framework分頁(yè)類(lèi)
- 解析如何使用Zend Framework 連接數(shù)據(jù)庫(kù)
- 解析zend Framework如何自動(dòng)加載類(lèi)
- Zend Framework上傳文件重命名的實(shí)現(xiàn)方法
相關(guān)文章
PHP 通過(guò)Socket收發(fā)十六進(jìn)制數(shù)據(jù)的實(shí)現(xiàn)代碼
以下是對(duì)PHP中通過(guò)Socket收發(fā)十六進(jìn)制數(shù)據(jù)的實(shí)現(xiàn)代碼進(jìn)行了分析介紹。需要的朋友可以過(guò)來(lái)參考下2013-08-08分享8個(gè)最佳的代碼片段在線測(cè)試網(wǎng)站
有時(shí)候,我們需要測(cè)試一些代碼片段,而電腦中沒(méi)有安裝針對(duì)該語(yǔ)言的運(yùn)行環(huán)境,沒(méi)關(guān)系,你可以在線測(cè)試它們2013-06-06php實(shí)現(xiàn)表單多按鈕提交action的處理方法
這篇文章主要介紹了php實(shí)現(xiàn)表單多按鈕提交action的處理方法,需要的朋友可以參考下2015-10-10淺析ThinkPHP中的pathinfo模式和URL重寫(xiě)
語(yǔ)文一直不太好,要我怎么解釋這個(gè)pathinfo模式還真不知道怎么說(shuō),那就先來(lái)一段代碼說(shuō)下pathinfo模式吧2014-01-01php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
在php中常見(jiàn)的計(jì)算字符串長(zhǎng)度的函數(shù)有:strlen和mb_strlen,下面是對(duì)這兩個(gè)函數(shù)的比較說(shuō)明(編碼方式UTF8)2009-07-07PHP實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的方法,涉及到ignore_user_abort函數(shù)忽略腳本終止的使用及sleep函數(shù)延緩執(zhí)行等的應(yīng)用,需要的朋友可以參考下2014-10-10