MVC介紹MVC是一種可以簡化應(yīng)用程序開發(fā)和維護的設(shè)計模式。為了實現(xiàn)這一目的,它將應(yīng)用程序分割到三個邏輯組件中。 模型(Model)。模型層負責(zé)應(yīng)用程序的業(yè)務(wù)邏輯。它將封裝訪問數(shù)據(jù)庫方法并提供一個可以重用的類庫。通常,在模型中,你將發(fā)現(xiàn)用于數(shù)據(jù)庫抽象、電子郵件發(fā)送、校驗和驗證等機制。 視圖(View)。視圖層通常包括Web設(shè)計或者模板設(shè)計等工作。它控制了數(shù)據(jù)的外觀并提供了從用戶收集數(shù)據(jù)的機制。在視圖中經(jīng)常找到視圖特有的技術(shù),包括HTML、CSS和JavaScript。 控制器(Controller)??刂破鲗訉⑺惺马椷B接在一起,并且將視圖設(shè)計和模型功能合并在一起。它負責(zé)從視圖中收集輸入數(shù)據(jù),并決定程序的執(zhí)行邏輯??刂破鲿{(diào)用模型的機制并解析返回的數(shù)據(jù),以便使這些數(shù)據(jù)能夠被視圖所展示。它還負責(zé)所有應(yīng)用程序的異??刂坪土骺刂?。 為什么使用MVC項目選擇MVC開發(fā)應(yīng)用程序的首要原因是它提倡的開發(fā)工作流。在開發(fā)團隊中,MVC提供了有效的合作模式,它將各人的職責(zé)分成為三個主要的角色。 開發(fā)。開發(fā)人員是指處理模型的程序員。他們通常擁有與PHP、數(shù)據(jù)庫管理、算法、架構(gòu)和數(shù)據(jù)校驗等方面相關(guān)的技能。這一個角色通常會負責(zé)實現(xiàn)應(yīng)用程序的編程細節(jié)(操作)。它們會提供API,同時實施處理數(shù)據(jù)的策略。 設(shè)計。設(shè)計人員處理視圖并負責(zé)實現(xiàn)應(yīng)用程序的外觀。他們具有如HTML、CSS、JavaScript和圖形設(shè)計等方面的技能。通常,這一角色負責(zé)與內(nèi)外部的通信源交互以決定要開發(fā)或者增強的應(yīng)用程序的實現(xiàn)的業(yè)務(wù)規(guī)則。設(shè)計通常會導(dǎo)致原型的開發(fā),也就是創(chuàng)建能夠顯示理想功能的模型設(shè)計。 集成。集成工作在于控制器層中,它將設(shè)計師和開發(fā)人員的工作連接在一起。集成人員的經(jīng)驗通常比開發(fā)人員要少,他們會負責(zé)切割靜態(tài)模板并且制作應(yīng)用程序所需的動態(tài)區(qū)域。他們還負責(zé)代理來自請求源的數(shù)據(jù)。將從表單中獲取請求信息,將這些信息傳遞給模型,解釋結(jié)果,并且將結(jié)果傳遞給視圖。 通過職責(zé)分工,開發(fā)方法的細節(jié)與開發(fā)需求的細節(jié)分開了,這使得創(chuàng)意學(xué)科和技術(shù)學(xué)科能夠更加容易地交互。 典型的工作流在一個典型的工作流中,首先設(shè)計師會根據(jù)現(xiàn)存的業(yè)務(wù)需求以及應(yīng)用程序所要實現(xiàn)的功能,制作一個靜態(tài)的、單獨的原型設(shè)計。然后設(shè)計師將設(shè)計內(nèi)容交給開發(fā)人員評審。 開發(fā)人員負責(zé)確保所有的要求實現(xiàn)的功能是可行的,并且符合公司的安全和隱私策略。如果開發(fā)人員沒有發(fā)現(xiàn)任何問題,他們就會創(chuàng)建一個開發(fā)計劃,其中包括一個API模型,然后再交給集成人員。如果原型出現(xiàn)了問題,項目會回到設(shè)計人員手中,這一過程就再次從頭開始。 準備好設(shè)計原型和API模型之后,集成工作就開始了。集成人員將研究原型設(shè)計,并將它轉(zhuǎn)換成模板語言,如普通PHP、Smarty等。這使得設(shè)計內(nèi)容可以處理動態(tài)數(shù)據(jù),并且將設(shè)計集成到完全由集成人員負責(zé)的站點URL結(jié)構(gòu)中。然后編寫一個控制器組件,這一組件將請求(來自于表單、URL參數(shù)、cookie等)在web服務(wù)器和他們需要操作的模型信息之間代理分發(fā)。結(jié)果產(chǎn)生之后,獲取視圖并輸出,并且控制器會提供所有動態(tài)內(nèi)容的值。 最后,當API模型完全實現(xiàn)之后,就可以將應(yīng)用程序交給測試人員測試了。如果集成人員根據(jù)規(guī)范編寫控制器,并且模型開發(fā)人員遵循API編寫代碼,那么一切都會順利進行。(工作流是自我的理解,不代表實際情況) 還有什么好處MVC架構(gòu)除了可以在團隊成員之間分配職責(zé)之外,它還提供了幾個非常關(guān)鍵的功能。 其中一個是只要表現(xiàn)層的設(shè)計不破壞與控制器的約定,它就允許在任何時間修改和更新表現(xiàn)層的設(shè)計。這意味著可以很容易地編輯副本或者變化主題,而不用改變應(yīng)用程序的操作方法或者整理大量的PHP代碼。 MVC架構(gòu)還提供了一個很有用的文件結(jié)構(gòu)分類方法。它為模型、視圖和控制器提供了單獨的文件,這一特性會減少代碼沖突,并且會節(jié)省原本用于合并版本控制系統(tǒng)中的修改時間(這句話不理解)。 摘自:PHP程序設(shè)計 模式、框架與測試 |
|