一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

深入淺出之Smarty模板引擎工作機(jī)制(一)

 syden1981 2014-11-17

深入淺出Smarty模板引擎工作機(jī)制,我們將對比使用smarty模板引擎和沒使用smarty模板引擎的兩種開發(fā)方式的區(qū)別,并動手開發(fā)一個(gè)自己的模板引擎,以便加深對smarty模板引擎工作機(jī)制的理解。

在沒有使用Smarty模板引擎的情況下,我們都是將PHP程序和網(wǎng)頁模板合在一起編輯的,好比下面的源代碼:

復(fù)制代碼
復(fù)制代碼
<?php
$title="深處淺出之Smarty模板引擎工作機(jī)制";
$content="Smarty模板引擎原理流程圖";
$auth="MarcoFly";
$website="www.MarcoFly.com";
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $title?></title>
</head>
<body>
<p>內(nèi)容:<?php echo $content?></p>
<p>作者:<?php echo $auth?></p>
<p>網(wǎng)址:<?php echo $website?></p>
</body>
</html>
復(fù)制代碼
復(fù)制代碼

輸出到瀏覽器的結(jié)果截圖:

查看HTML源代碼:

復(fù)制代碼
復(fù)制代碼
<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>深處淺出之Smarty模板引擎工作機(jī)制</title>

</head>

<body>

<p>內(nèi)容:Smarty模板引擎原理流程圖</p>

<p>作者:MarcoFly</p>

<p>網(wǎng)址:www.MarcoFly.com</p>

</body>

</html>
復(fù)制代碼
復(fù)制代碼


程序比較小的情況下這種開發(fā)方式尚且不方便,一旦要開發(fā)一個(gè)大的WEB項(xiàng)目,就必須得使用到模板引擎。

使用模板引擎的情況下:
我們的開發(fā)方式將有所改變,美工人員只管做模板,后臺開發(fā)人員專心寫自己的程序。
一個(gè)web項(xiàng)目就可以分為模板文件PHP程序
比如:
美工人員就可以這樣編輯網(wǎng)頁模板文件:
index.dwt源代碼

復(fù)制代碼
復(fù)制代碼
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><{$title}></title>
</head>
<body>
<p>內(nèi)容:<{$content}></p>
<p>作者:<{$auth}></p>
<p>網(wǎng)址:<{$website}></p>
</body>
</html>
復(fù)制代碼
復(fù)制代碼
而后臺WEB開發(fā)人員可以專注于PHP代碼的書寫:
index.php
復(fù)制代碼
復(fù)制代碼
<?php
include "./Smarty.ini.php";
$title="深處淺出之Smarty模板引擎工作機(jī)制";
    $content="Smarty模板引擎工作機(jī)制流程圖";
$auth="MarcoFly";
$website="www.MarcoFly.com";
$tpl->assign("title",$title);
$tpl->assign("content",$content);
$tpl->assign("auth",$auth);
$tpl->assign("website",$website);
$tpl->display("index.dwt");
?>
復(fù)制代碼
復(fù)制代碼


從以上兩段簡單的演示代碼可以看出,前臺模板文件沒有涉及到任何關(guān)于PHP的代碼,只有幾個(gè)看似陌生的標(biāo)簽<{$title}><{$content}>,而后臺的php程序代碼也沒有涉及到前臺的HMTL代碼
      參考下圖對比這兩種開發(fā)方式的區(qū)別



通過對比,我們得出結(jié)論:在使用模板引擎后,原先需要使用PHP編寫的地方,現(xiàn)在只需要用模板引擎提供標(biāo)簽的形式來代替了。
注:Smarty模板引擎默認(rèn)的標(biāo)簽形式是{$xxx},如,{$title},{$content}
當(dāng)然我們可以初始化為自己想要的標(biāo)簽形式,如我將其初始化為:<{$xxx}>的形式),如,<{$title}>、<{$content}>
 
不知各位看官有木有覺得奇怪,<{$title}>、<{$content}>根本就不是PHP的語法形式,那最終又是如何被輸出到客戶的瀏覽器中的,是否另有玄機(jī)?帶著這個(gè)疑問,我們繼續(xù)深究......
  其實(shí),這一切的一切都是由Smarty模板引擎這雙神秘的手在“暗中操作”著,經(jīng)過Smarty模板引擎的“暗中操作”之后,起初的模板文件(index.dwt)經(jīng)過Smarty“成功手術(shù)”之后,被改造為能在服務(wù)器端執(zhí)行的PHP代碼文件。
想看看模板文件(index.dwt)和后臺的PHP程序(index.php)經(jīng)過“手術(shù)”(即編譯)之后的廬山真面目嗎?
在此貼上經(jīng)過模板引擎編譯之后的編譯文件的源代碼:
復(fù)制代碼
復(fù)制代碼
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $this->arr["title"] ?></title>
</head>
<body>
<p>內(nèi)容:<?php echo $this->arr["content"] ?></p>
<p>作者:<?php echo $this->arr["auth"] ?></p>
<p>網(wǎng)址:<?php echo $this->arr["website"] ?></p>
</body>
</html>
復(fù)制代碼
復(fù)制代碼

看到這里,各位看官是否恍然大悟,原來Smarty模板引擎的工作就是:將前臺美工人員編寫的模板文件(index.dwt)和后臺開發(fā)人員編寫的PHP程序(index.php)整合在一起,經(jīng)過編譯這一步驟之后,原先的模板標(biāo)簽被替換成了php代碼。
為了方便大家理解,我簡單的做了一張代碼流程圖:

如果你覺得很神秘,想更深入了解Smarty模板引擎是如何完成這一步驟的,可以看看深入淺出之Smarty模板引擎工作機(jī)制(二)

文章出自:WEB開發(fā)_小飛

轉(zhuǎn)載請注明出處:http://www.cnblogs.com/hongfei/archive/2011/12/10/Smarty-one.html

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本人妻中出在线观看| 精品人妻精品一区二区三区| 情一色一区二区三区四| 中文字幕人妻日本一区二区| 正在播放玩弄漂亮少妇高潮| 亚洲一区二区精品久久av| 欧美一区日韩二区亚洲三区| 日本高清不卡一二三区| 国产传媒免费观看视频| 丰满少妇被猛烈撞击在线视频| 91亚洲国产—区=区a| 男女激情视频在线免费观看| 国产精品久久女同磨豆腐| 国产亚州欧美一区二区| 日韩人妻欧美一区二区久久| 国内九一激情白浆发布| 日本福利写真在线观看| 激情爱爱一区二区三区| 精品久久av一二三区| 国产精品香蕉在线的人| 欧美在线视频一区观看| 日本午夜一本久久久综合| 欧美日韩国产另类一区二区| 亚洲一区二区三区熟女少妇| 国产精品人妻熟女毛片av久| 国产又色又爽又黄又大| 亚洲欧美日韩精品永久| 国产又粗又黄又爽又硬的| 黄色片国产一区二区三区| 国产一区二区三区色噜噜| 日韩aa一区二区三区| 欧美胖熟妇一区二区三区| 婷婷基地五月激情五月| 国产专区亚洲专区久久| 91精品视频全国免费| 手机在线不卡国产视频| 日韩一级一片内射视频4k| 国产高清在线不卡一区| 欧美黑人精品一区二区在线| 日韩成人高清免费在线| 国产剧情欧美日韩中文在线|