日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

深入浅出之Smarty模板引擎工作机制(一)

發布時間:2025/7/14 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出之Smarty模板引擎工作机制(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

<?php
$title="深處淺出之Smarty模板引擎工作機制";
$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>內容:<?php echo $content?></p>
<p>作者:<?php echo $auth?></p>
<p>網址:<?php echo $website?></p>
</body>
</html>

輸出到瀏覽器的結果截圖:

查看HTML源代碼:

<!DOCTYPE HTML>

<html>

<head>

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

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

</head>

<body>

<p>內容:Smarty模板引擎原理流程圖</p>

<p>作者:MarcoFly</p>

<p>網址:www.MarcoFly.com</p>

</body>

</html>


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

使用模板引擎的情況下: 我們的開發方式將有所改變,美工人員只管做模板,后臺開發人員專心寫自己的程序。 一個web項目就可以分為模板文件PHP程序了 比如: 美工人員就可以這樣編輯網頁模板文件: index.dwt源代碼 <!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><{$title}></title>
</head>
<body>
<p>內容:<{$content}></p>
<p>作者:<{$auth}></p>
<p>網址:<{$website}></p>
</body>
</html> 而后臺WEB開發人員可以專注于PHP代碼的書寫: index.php <?php
include "./Smarty.ini.php";
$title="深處淺出之Smarty模板引擎工作機制"; $content="Smarty模板引擎工作機制流程圖";
$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");
?>

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

通過對比,我們得出結論:在使用模板引擎后,原先需要使用PHP編寫的地方,現在只需要用模板引擎提供標簽的形式來代替了。 注:Smarty模板引擎默認的標簽形式是{$xxx},如,{$title},{$content} 當然我們可以初始化為自己想要的標簽形式,如我將其初始化為:<{$xxx}>的形式),如,<{$title}>、<{$content}> ? 不知各位看官有木有覺得奇怪,<{$title}>、<{$content}>根本就不是PHP的語法形式,那最終又是如何被輸出到客戶的瀏覽器中的,是否另有玄機?帶著這個疑問,我們繼續深究......   其實,這一切的一切都是由Smarty模板引擎這雙神秘的手在“暗中操作”著,經過Smarty模板引擎的“暗中操作”之后,起初的模板文件(index.dwt)經過Smarty“成功手術”之后,被改造為能在服務器端執行的PHP代碼文件。 想看看模板文件(index.dwt)和后臺的PHP程序(index.php)經過“手術”(即編譯)之后的廬山真面目嗎? 在此貼上經過模板引擎編譯之后的編譯文件的源代碼: <!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>內容:<?php echo $this->arr["content"] ?></p>
<p>作者:<?php echo $this->arr["auth"] ?></p>
<p>網址:<?php echo $this->arr["website"] ?></p>
</body>
</html>
看到這里,各位看官是否恍然大悟,原來Smarty模板引擎的工作就是:將前臺美工人員編寫的模板文件(index.dwt)和后臺開發人員編寫的PHP程序(index.php)整合在一起,經過編譯這一步驟之后,原先的模板標簽被替換成了php代碼。 為了方便大家理解,我簡單的做了一張代碼流程圖:

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

文章出自:WEB開發_小飛

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

總結

以上是生活随笔為你收集整理的深入浅出之Smarty模板引擎工作机制(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。