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

 

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