PHP實現簡易的模板引擎
1. Model(模型)表示應用程序核心(好比數據庫記錄列表)。 2. View(視圖)顯示數據(數據庫記錄) 3. Controller(控制器)處理輸入(寫入數據庫記錄)。
[百度百科]php
MVC的流程圖以下(來源百度百科):
html
採用模板引擎使得數據和顯示分離,這種方式更易於維護。前端
<!DOCTYPE html>
這種方式每每隨着前端邏輯的複雜度變得愈來愈大,代碼的可讀性也會變得不好,代碼的可重用性也很差。(好比咱們須要重複的編寫從數據庫中獲取數據的代碼)git
該機制主要是執行數據庫操做的代碼get_data.php單獨放到一個文件中,顯示的hmtl代碼show_page.php放到另外一個文件中,而後在html代碼show_page.php中包含執行數據庫操做的代碼get_data.php.代碼以下:github
<?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(); ?>
<!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語法等高級功能也不容易實現。web
該機制與上一個機制恰好相反,在負責數據操做的文件中包含模板,模板只負責顯示便可,不用考慮php操做。
本引擎的執行流程以下:
正則表達式
因爲代碼有點長,因此放在github上,O(∩_∩)O~,代碼比較簡單,能夠加深咱們對模板引擎的理解,smarty等更復雜,但基本原理差很少就是這樣。
具體代碼連接以下:https://www.github.com/fengyuhetao/Code.git,該目錄Template Engine中就是簡易的模板引擎代碼。sql