php 實現簡易模板引擎

來源:互聯網
上載者:User

標籤:

1.MVC簡介MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計建立 Web 應用程式的模式(詳情自己百度):
1. Model(模型)表示應用程式核心(比如資料庫記錄列表)。2. View(視圖)顯示資料(資料庫記錄)3. Controller(控制器)處理輸入(寫入資料庫記錄)。

[百度百科]

MVC的流程圖如下(來源百度百科):

2.本文重點:模板引擎在視圖層,PHP可以採用兩種方式編寫:
  1. PHP代碼和HTML代碼混寫,甚至JavaScript等
  2. 採用模板引擎使得資料和顯示分離,這種方式更易於維護。

    首先讓我們來看一下混寫代碼:
    <!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 實現簡易模板引擎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.