php模板引擎原理是作為視圖層和模型層分離的一種有效解決方案,讓前后端更好的分工協(xié)作,來自于經(jīng)典的MVC模型,即【模型層-視圖層-控制器模型】,將M和V實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。
10年的西安網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整西安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“西安網(wǎng)站設(shè)計”,“西安網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
php模板引擎原理是:
1、模板引擎的由來
模板引擎思想來自于經(jīng)典的MVC
模型,即模型層 - 視圖層 - 控制器模型。MVC本來存在于桌面程序中,M指數(shù)據(jù)模型,V指用戶界面,C指控制器。使用MVC的目的是將M和V實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。
隨著Web的流行,這一模型被引入Web開發(fā)中。此時,V(視圖層),也就是通常所說的模板,實現(xiàn)了數(shù)據(jù)生成和數(shù)據(jù)展示的分離。早期的視圖通常是由html元素控制界面,隨著互聯(lián)網(wǎng)的發(fā)展,一些新的表現(xiàn)出技術(shù)(例如Flex等)流行起來,MVC使得數(shù)據(jù)和表現(xiàn)得到分離,一套數(shù)據(jù)可以用于多種表現(xiàn)層而無需修改邏輯層的代碼。例如,可以在M層(模型層)生成博客文章列表的數(shù)據(jù),然后可以在傳統(tǒng)的Web頁面、RIA應(yīng)用、手機應(yīng)用中使用不同的表現(xiàn)層技術(shù)來展示數(shù)據(jù),而不用修改邏輯層的代碼,實現(xiàn)前端和后端的分離。
此外,AJAX
技術(shù)的流行、Jquery庫的普遍應(yīng)用,使早期html、Javascript、PHP代碼混寫的情況得到改觀。AJAX技術(shù)的應(yīng)用使數(shù)據(jù)的請求和生成、展示實現(xiàn)了分離,促進(jìn)了表現(xiàn)層(V)和代碼層的分離。
模板引擎作為視圖層和模型層分離的一種有效解決方案,讓前后端更好的分工協(xié)作。PHP開發(fā)經(jīng)歷了前后端混編,到極力推崇模板引擎(以Smarty為代表),再到如今的回歸自然、甚至質(zhì)疑PHP模板引擎存在的必要性這幾個發(fā)展階段。
PHP中到底有沒有必要使用模板引擎?模板引擎的原理是什么?為什么Smarty會那么的流行,而如今在PHP社區(qū)又引起如此大的爭論?這些都是在接下來討論的問題。
2代碼分層的思想
PHP作為輕巧靈活的腳本語言,非常適合Web開發(fā)這種開發(fā)周期短、需求變化快、強調(diào)用戶體驗的需求和業(yè)務(wù)。PHP早起開發(fā),通常都是PHP代碼和HTML混寫,代碼中到處可見數(shù)據(jù)庫操作、邏輯判斷、HTML代碼生成,甚至Javascript代碼等。對于小型項目,這種編碼方式能夠很快的完成需求。但是一旦項目擴大后,前端邏輯會越來越復(fù)雜,這種完全混寫的方式必將造成代碼可讀性差和后期維護困難等等問題。
在PHP發(fā)展初期,我們可能這么寫:
<html> <head> <meta http-equiv="content-type"content="text/html;charset=utf-8"> <title>最原始的PHP編碼風(fēng)格 - 李苦李</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>
顯而易見,對于上述代碼無論是在可讀性、可維護性還是在代碼的復(fù)用性上都是極其差的。需要想辦法實現(xiàn)數(shù)據(jù)生成和顯示的分離,通常最容易想到的辦法就是把和數(shù)據(jù)庫打交道的代碼單獨放到一個文件中,顯示數(shù)據(jù)的部分放到另一個文件中。新建文件data.php
并獲取數(shù)據(jù),如以下代碼所示:
<?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); ?>
這兩種做法都沒有實現(xiàn)PHP代碼和HTML代碼的分離,但是第二種做法相比第一種做法實現(xiàn)了數(shù)據(jù)獲取和數(shù)據(jù)展示的分離。在第二種處理方法中,其中一個文件專門負(fù)責(zé)和數(shù)據(jù)庫交互,獲取和處理數(shù)據(jù)。然后交由另一個文件顯示數(shù)據(jù),這個負(fù)責(zé)顯示的文件只是進(jìn)行一些簡單的邏輯操作,例如循環(huán)、判斷、輸出等。顯然,第二種處理方式比第一種處理方式更加易于維護。
對于第二種處理方式,我們還可以使用HereDoc語法使其更簡潔,代碼如下所示:
<?php foreach($dataas$value) { echo<<< TM <tr><td>$value[id]</td><td>$value[username]</td></tr>; TM; } ?>
第二種處理方式即原生態(tài)的PHP模板機制,是當(dāng)前一些PHP程序所采用的模板機制,特點就是簡單靈活、符合PHP的語法和使用習(xí)慣、學(xué)習(xí)成本低。缺點就是不能實現(xiàn)一些高級功能,例如實現(xiàn)可配置化、緩存、使得模板文件脫離PHP語法等等。今天先寫到這里,這些問題我們將會在接下來的文章中陸續(xù)解決。
文章名稱:php模板引擎原理是什么?
轉(zhuǎn)載來于:http://www.rwnh.cn/article30/cpgpso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、域名注冊、微信公眾號、小程序開發(fā)、網(wǎng)站內(nèi)鏈、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)