何謂MVC Framework?(以cakephp為例)

mvc

以前在傳統開發網站的時候,若你沒有用framework來開發,通常會有以下的問題:
1.code骯髒,可讀性很差
2.global變數誤用可能性很高
3.缺乏完整的網站架構,debug困難
4.須考慮各種安全性問題,諸如sql injection
5.html跟程式碼混在一起
……
諸如此類的問題層出不窮。

後來有了MVC Framework,MVC Framework是一種設計模式(design pattern),它可以幫你解決上述的困擾,這裡以Cakephp這個MVC Framework來做解釋。

M(Model):主要是用來跟Database溝通,Model不管任何html的東西,Model要做的事只是讓Controller跟它說它要什麼資料,然後丟給Controller。
C(Controller):用來處理所有商務邏輯,諸如View要哪些資料,要到哪個頁面,該過濾什麼東西,判斷使用者是否登入,….諸如此類的邏輯程式都會放在Controller作處理。
V(View):用來呈現使用者所看到的網頁,View的程式碼盡量只包含Html就好。

以上就是M-V-C的三大部分解釋。

當使用者輸入網址後,即對Server發送了一次Request,整個MVC流程會是如上圖所示:
Router根據使用者的網址決定它要丟給哪個Controller跟Action來處理,Controller會跟Model溝通(Model當然也會跟DB溝通),要到需要的資料後,會根據需求導到View的頁面,View最後再將頁面呈現給使用者看。

這裡在定義Cakephp一些除它的輔助工具:
Helper:View難免也會需要商業邏輯之類的程式碼,諸如PHP,這時會將它寫在Helper裡面,簡言之,Helper是用來輔助View的。
Component:類似Helper,只是Component是用來輔助Controller的。
Behavior:類似Helper,只是Behavior是用來輔助Model
Element:類似Helper,也是用來輔助View

基本上各個MVC Framework都大同小異,重點是MVC Framework它幫你做了很多事情,例如Sql Injection也替你處理好了,讓你的網站更有架構,哪裡錯誤你會知道去哪debug,global變數也不會誤用,讓過去Code很骯髒的弊病得到很大的改善,而MVC Framework基本上都是由社群來維護,基本上Code都獲得非常好的改善。

現在開發網站很少不使用Framework的,善用Framework可以替你增加開發的效率,快速開發一個網站,以上MVC的觀念解釋提供參考。