前言:研究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架構的觀念

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 miggo 的頭像
    miggo

    麥克的學習紀錄

    miggo 發表在 痞客邦 留言(0) 人氣()