它們在文件中沒有意義,它們代表的意義只是PHP將用其他的東西來取代它。 如果你同意這種對視圖的鬆散描述,你也會同意絕大多數模板方案並沒有有效的分離視圖和模型。模板標籤將被替換成什麼存放在模型中。 在你實現視圖時問自己幾個問題:「全體視圖的替換容易嗎?」「實現一個新視圖要多久?」 「能很容易的替換視圖的描述語言嗎?(例如在同一個視圖中用SOAP文檔取代HTML文檔)” 二、模型(Model) 模型代表了程式邏輯。 (在企業級程序中常稱為業務層(business layer)) 總的來說,模型的任務是把原有數據轉換成包含某些意義的數據,這些數據將被視圖所顯示。通常,模型將封裝資料查詢,可能透過一些抽象資料類別(資料存取層)來實現查詢。舉例說,你希望計算英國年度降雨量(只是為了給你自己找個好點的度假地),模型將接收十年中每天的降雨量,計算出平均值,再傳遞給視圖。 三、控制器(controller) 簡單的說控制器是Web應用中進入的HTTP請求最先呼叫的一部分。它檢查收到的請求,例如一些GET變量,做出合適的回饋。在寫出你的第一個控制器之前,你很難開始寫其他的php程式碼。最常見的用法是index.php中像switch語句的結構:
這裡是一個使用MVC模式的簡單範例。 首先我們需要一個資料庫存取類,它是一個普通類。
在它上面放上模型。
接下來是視圖(以下程式碼去掉了html內容)。
最後是控制器,我們將把視圖實作為一個子類別。
注意:這不是實現MVC的唯一方式-例如你可以用控制器實作模型同時整合視圖。這只是演示模式的一種方法。 index.php 檔案看起來像這樣:
有些使用控制器的技巧,在PHP中你可以這樣做: $this->{$_GET['method']}($_GET['param']); 建議最好定義程式URL的名字空間形式(namespace),這樣它會比較規範例如:
|