smarty
一、模板原理
1、 為什麼使用模板
1) 場景:
for($i=0;$i<$count;$i++){
echo ‘<td>’.$row[‘proname’].’</td>
}
以上這種寫法將html與php進行混編,不利於開發和維護
2) 場景:
我們現在開發了一個網站,經過一段時間的運營,客戶對前台不滿意,我們又開發一套界面,但運行之後,客戶認為之前的樣式比較好,經常更換網站樣式
解決以上兩個問題的最好辦法,就是使用模板
2、 模板的具體實現
模板的實現其實就是字符串替換
1) 例1
模板文件:
PHP文件:
1) 例2:
Template類:
PHP代碼:
上面的類文件中的代碼,不夠優化,我們可以使用比較流行的模板框架來實現自己的項目
二、Smarty簡介
1、 什麼是Smarty
Smarty是一個基於PHP開發的PHP模板引擎。它提供了邏輯與外在內容的分離。
2、 Smarty的特點
l 速度
l 編譯型
l 緩存技術
l 插件技術
l 語句自由 if/elseif/else/endif
l 實時更新 :實時性要求比較高
3、 配置
l http://smarty.php.net
l /lib
l Smarty 2.6 php4.0
l Smarty 3.0 php5.0
1 解壓smarty,進入解壓目錄
Demo:案例
Libs:Smarty源代碼
1) 進入libs目錄,
Plugins:自定義插件目錄
Sysplugins:系統插件目錄
Debug.tpl :在Smarty中,有調試功能,可以觀察變量的值 ,調試窗口模板
Smarty.class.php:Smarty核心類文件(入口文件)
SmartyBC.class.php :Smarty3.0在2.0的基礎上進行了升級,如果想使用2.0的功能,可以引用這個入口文件
3)將libs目錄復制到項目中,並重命名
三、 快速入門
1、 代碼實現:
模板代碼:
{$name}、{$age} :模板標記變量
程序代碼:
2、 smarty工作原理:
l smarty將php源文件,首先編譯成中間文件
l 如果啟用緩存,再根據編譯文件生成緩存文件
l 之後的每次訪問都會訪問編譯文件
l 如果啟用緩存且有緩存文件而且沒有過期,則直接訪問緩存文件
Smarty第一次運行某個程序時,會將這個程序生成一個編譯文件
以後,每次運行這個程序時,只要模板沒有改變,就直接運行這個編譯文件,如果模板改變了,就重新生成編譯文件,再去運行。
編譯是指針對模板的編譯
3、 原理圖: