前言:研究PHP MVC的動機
從最早接觸的PHP 3.x 版本,開發時都是採用html + php 程式的方式進行
我想這就不用談了,大部分剛開始的PHP教學書籍,都是採用此種寫法作介紹吧!
較進階的是使用Smarty,程式和視覺分開撰寫,感覺上比較有系統,
優點非常明顯,就是視覺和程式的同步修改,彼此的影響干擾很小
但在陸續執行幾個網站後,慢慢就發現僅是Smarty的架構是不夠的~
採用Smarty的程式,大略是長成這樣的
網址傳入
http://www.xxx.com/message.php?EditMode=edit |
message.php內容長的像這樣子:
<? //宣告smart物件模組(自己寫的,這不重要..) $tpl = new MySmarty(); $tpl->init();
$_GET["EditMode"] ? $EditMode = $_GET["EditMode"] : $EditMode = $_POST["EditMode"] ; //讀取傳入的EditMode參數,用來區分行為 switch($EditMode){ case "add": //新增頁面 ............ $main = "div_post.htm"; break; case "addData": //新增頁面送出處理 if($_POST["cmdAdd"]){ ............ } $main = "div_main.htm"; break; default: $main = "div_main.htm"; break; }
//smarty版型 讀取和顯示 $tpl->showWebTemplate($main); ?> |
明顯可以看到,程式是讀入傳入的參數當成控制項
並在各控制項中撰寫程式處理邏輯,以及讀入相關視覺頁面
以上作法,在小架構的網站程式應用是沒問題的
但是在大型、或是需處理複雜的商業邏輯判斷
這種程式就顯得非常繁瑣,非常不易閱讀和維護
一個case "list" 可能就佔掉50行,整個程式處理下來
有到330行的......
有沒有更好的處理方式?
我想MVC架構或許是個好的解決方式
PHP目前最夯的,像是CakePHP、Zend Framework都有支援MVC架構
可是看了一下,或許都已經發展的非常完整了
直接使用,對於整個原理的瞭解似乎沒有幫助
於是就有自己寫個小的MVC模型,當成實驗的想法
也幫自己釐清MVC架構的觀念
留言列表