標籤:
1.MVC簡介MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計建立 Web 應用程式的模式(詳情自己百度):
1. Model(模型)表示應用程式核心(比如資料庫記錄列表)。2. View(視圖)顯示資料(資料庫記錄)3. Controller(控制器)處理輸入(寫入資料庫記錄)。
[百度百科]
MVC的流程圖如下(來源百度百科):
2.本文重點:模板引擎在視圖層,PHP可以採用兩種方式編寫:
- PHP代碼和HTML代碼混寫,甚至JavaScript等
採用模板引擎使得資料和顯示分離,這種方式更易於維護。
首先讓我們來看一下混寫代碼:<!DOCTYPE html> <html><head><title>混寫代碼</title></head><body> 商品資訊: <?php mysql_connect("localhost","root","") or die("conect failed:".mysql_error()); mysql_select_db("shop"); $result = mysql_query("select * from sh_goods");?> <ul> <?php while (mysql_fetch_array($result)) {?> <li><?php echo $result[‘good_name‘]; ?></li> <?php } ?> </ul> <?php mysql_free_result($result); mysql_close(); ?></body></html>
這種方式往往隨著前端邏輯的複雜度變得越來越大,代碼的可讀性也會變得很差,代碼的可重用性也不好。(比如我們需要重複的編寫從資料庫中擷取資料的代碼)
模板引擎有兩種機制接下來,我們用原生態模板機制來實現1.原生態機制
該機制主要是執行資料庫操作的代碼get_data.php單獨放到一個檔案中,顯示的hmtl代碼show_page.php放到另一個檔案中,然後在html代碼show_page.php中包含執行資料庫操作的代碼get_data.php.代碼如下:
get_data.php
<?php mysql_connect("localhost","root","") or die("conect failed:".mysql_error()); mysql_select_db("shop"); $result = mysql_query("select * from sh_goods"); $data = array(); while (mysql_fetch_array($result)) { $data[] = $result[‘good_name‘]; } mysql_free_result($result); mysql_close(); ?>
show_page.php
<!DOCTYPE html> <html> <head> <title>分離代碼</title> </head> <body> 商品資訊: <ul> <?php include ‘get_data.php‘; foreach ($data as $key => $value) { ?> <li><?php echo $value[‘good_name‘]; ?></li> <?php } ?> </ul> </body> </html>
該機制比較簡單,符合PHP的文法和使用的習慣,顯然比混寫代碼更容易維護。但是,有時考慮到網站的效能,我們想要緩衝代碼的時候,這種方法就不能提供支援了。類似的,錯誤處理,可配置化,脫離php文法等進階功能也不容易實現。
2.更強大的模板機制
該機制與上一個機制剛好相反,在負責資料操作的檔案中包含模板,模板只負責顯示即可,不用考慮php操作。
本引擎的執行流程如下:
php 實現簡易模板引擎