您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關php模板引擎的作用和用法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1、模板引擎的由來
模板引擎思想來自于經典的MVC
模型,即模型層 - 視圖層 - 控制器模型。MVC本來存在于桌面程序中,M指數據模型,V指用戶界面,C指控制器。使用MVC的目的是將M和V實現代碼分離,從而使同一個程序可以使用不同的表現形式。
隨著Web的流行,這一模型被引入Web開發中。此時,V(視圖層),也就是通常所說的模板,實現了數據生成和數據展示的分離。早期的視圖通常是由html元素控制界面,隨著互聯網的發展,一些新的表現出技術(例如Flex等)流行起來,MVC使得數據和表現得到分離,一套數據可以用于多種表現層而無需修改邏輯層的代碼。例如,可以在M層(模型層)生成博客文章列表的數據,然后可以在傳統的Web頁面、RIA應用、手機應用中使用不同的表現層技術來展示數據,而不用修改邏輯層的代碼,實現前端和后端的分離。
此外,AJAX
技術的流行、Jquery庫的普遍應用,使早期html、Javascript、PHP代碼混寫的情況得到改觀。AJAX技術的應用使數據的請求和生成、展示實現了分離,促進了表現層(V)和代碼層的分離。
模板引擎作為視圖層和模型層分離的一種有效解決方案,讓前后端更好的分工協作。PHP開發經歷了前后端混編,到極力推崇模板引擎(以Smarty為代表),再到如今的回歸自然、甚至質疑PHP模板引擎存在的必要性這幾個發展階段。
2代碼分層的思想
PHP作為輕巧靈活的腳本語言,非常適合Web開發這種開發周期短、需求變化快、強調用戶體驗的需求和業務。PHP早起開發,通常都是PHP代碼和HTML混寫,代碼中到處可見數據庫操作、邏輯判斷、HTML代碼生成,甚至Javascript代碼等。對于小型項目,這種編碼方式能夠很快的完成需求。但是一旦項目擴大后,前端邏輯會越來越復雜,這種完全混寫的方式必將造成代碼可讀性差和后期維護困難等等問題。
在PHP發展初期,我們可能這么寫:
<html> <head> <meta http-equiv="content-type"content="text/html;charset=utf-8"> <title>最原始的PHP編碼風格 - 李苦李</title> </head> <body> <table> <tr> <td>ID</td> <td>姓名</td> </tr> <?php mysql_connect("localhost","admin","password")or die("Could not connect:".mysql_error()); mysql_select_db("user_db"); $result= mysql_query("select id,username from user"); while($row= mysql_fetch_array($result)) { echo"<tr><td>".$row['id']."</td><td>" .$row['username']."</td></tr>"; } mysql_free_result($result); ?> </table> <?php //其他功能模塊 ?> </body> </html>
顯而易見,對于上述代碼無論是在可讀性、可維護性還是在代碼的復用性上都是極其差的。需要想辦法實現數據生成和顯示的分離,通常最容易想到的辦法就是把和數據庫打交道的代碼單獨放到一個文件中,顯示數據的部分放到另一個文件中。新建文件data.php
并獲取數據,如以下代碼所示:
<?php mysql_connect("localhost","admin","password")or die("Could not connect:".mysql_error()); mysql_select_db("user_db"); $result= mysql_query("select id,username from user"); while($row= mysql_fetch_array($result)) { $data[] =$row; } mysql_free_result($result); ?>
這兩種做法都沒有實現PHP代碼和HTML代碼的分離,但是第二種做法相比第一種做法實現了數據獲取和數據展示的分離。在第二種處理方法中,其中一個文件專門負責和數據庫交互,獲取和處理數據。然后交由另一個文件顯示數據,這個負責顯示的文件只是進行一些簡單的邏輯操作,例如循環、判斷、輸出等。顯然,第二種處理方式比第一種處理方式更加易于維護。
對于第二種處理方式,我們還可以使用HereDoc語法使其更簡潔,代碼如下所示:
<?php foreach($dataas$value) { echo<<< TM <tr><td>$value[id]</td><td>$value[username]</td></tr>; TM; } ?>
第二種處理方式即原生態的PHP模板機制,是當前一些PHP程序所采用的模板機制,特點就是簡單靈活、符合PHP的語法和使用習慣、學習成本低。缺點就是不能實現一些高級功能,例如實現可配置化、緩存、使得模板文件脫離PHP語法等等。
上述就是小編為大家分享的php模板引擎的作用和用法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。