PHP模板之Smarty教程
我們知道PHP語言作為開源社區(qū)的一員,提供了各種模板引擎,如FastTemplate,Smarty,SimpleTemplate等,而Smarty是現(xiàn)在使用得比較多的PHP模板引擎,今天和大家分享在PHP開發(fā)中如何安裝與使用Smarty,也算是對Smarty的入門學(xué)習(xí)。
一、準(zhǔn)備工作
1、選擇安裝Smarty的目錄
如果擁有服務(wù)器權(quán)限,考慮到安全性可以選擇將Smarty安裝在WEB程序文檔目錄之外的地方,然后通過將Smarty安裝目錄地址包含在PHP.INI文件中的include_path選項。
如果是虛擬主機權(quán)限,或者好幾個項目,可以將Smarty安裝在各自的項目目錄中,在require Smarty類文件,也可以使用Smarty模板引擎。當(dāng)然為了安全考慮,你可以通過apache禁止相關(guān)目錄訪問。
另外這兩種Smarty安裝方式在移植性方面有所區(qū)別,第一種方式需要保證每臺服務(wù)器有相同的Smarty配置,第二種方式對每臺服務(wù)器配置沒有影響。你可以根據(jù)各自的需要選擇Smarty的安裝方式。
2、下載Smarty,請點擊這里下載Smarty,我選擇的是Smarty-2.6.25
Smarty安裝步驟
1、解壓下載的Smarty-2.6.25壓縮包
2、拷貝libs文件夾到WEB程序目錄下,我的目錄為test\smarty
Linux下的安裝方法可以參考這里。
在安裝完Smarty模板后,我們開始簡單使用Smarty。
三、Smarty使用
1、創(chuàng)建相關(guān)目錄
由于在使用Smarty的過程中,Smarty會生成編譯的模板文件以及其他配置文件、緩存文件,我們需要創(chuàng)建相關(guān)的目錄。我在test\smarty目錄下,另外創(chuàng)建了tpls目錄,并在tpls目錄下創(chuàng)建templates、templates_c、configs、cache目錄。為什么需要創(chuàng)建這些目錄呢?打開Smarty.class.php文件,我們可以看到Smarty類定義了部分的成員屬性。
$template_dir:設(shè)定所有模板文件都需要放置的目錄地址。默認情況下,目錄是:“./templates”,也就是在PHP執(zhí)行程序同一個目錄下尋找該模板目錄。
$compile_dir:設(shè)定Smarty編譯過的所有模板文件的存放目錄地址。默認目錄是:“./templates_c”,也就是在PHP執(zhí)行程序同一個目錄下尋找該編譯目錄。如果你在Linux服務(wù)器上創(chuàng)建這個目錄,你還需要修改此目錄的權(quán)限,使它有寫的權(quán)限。
$config_dir:設(shè)定用于存放模板特殊配置文件的目錄,默認目錄是:“./configs”,也就是在PHP執(zhí)行程序同一個目錄下尋找該配置目錄。
$cache_dir:在啟動緩存特性的情況下,這個屬性所指定的目錄中放置Smarty緩存的所有模板。默認目錄是:”./cache”,也就是在PHP執(zhí)行程序同一個目錄下尋找該緩存目錄。你也可以用你自定義的緩存處理函數(shù)來控制緩存文件,它將會忽略這項設(shè)置。同樣如果你在Linux服務(wù)器上創(chuàng)建這個目錄,你還需要修改此目錄的權(quán)限,使它有寫的權(quán)限。
為了系統(tǒng)安全和移植性考慮,建議不要將這些目錄建立在PHP執(zhí)行程序同一目錄下,可以將它建立在PHP執(zhí)行程序目錄之外,如果已建立在PHP執(zhí)行程序同一目錄下,可以通過Apache做好目錄限制訪問工作。
2、建立相關(guān)配置文件
我們需要創(chuàng)建一個配置文件,來覆蓋Smarty類的默認成員屬性,并命名為main.php,保存在smarty目錄下,以后哪個腳本需要使用Smarty,我們只要把main.php包含進來即可。
- <?
- include("./smarty/libs/Smarty.class.php");
- define('SMARTY_ROOT', './smarty/tpls');
- $tpl = new Smarty();
- $tpl->template_dir = SMARTY_ROOT."/templates/";
- $tpl->compile_dir = SMARTY_ROOT."/templates_c/";
- $tpl->config_dir = SMARTY_ROOT."/configs/";
- $tpl->cache_dir = SMARTY_ROOT."/cache/";
- $tpl->caching=1;
- $tpl->cache_lifetime=60*60*24;
- $tpl->left_delimiter = '<{';
- $tpl->right_delimiter = '}>';
- ?>
注釋:
第1-8行:主要定義一個smarty對象,同時設(shè)定模板文件、編譯文件、緩存文件、配置文件的存放目錄,覆蓋Smarty.class.php中的默認值。
第9-10行:設(shè)定開啟緩存,同時設(shè)定緩存的有效時間為1天。
知識點:$caching用來設(shè)置是否開啟緩存功能。默認值設(shè)為0或無效。你也可以為同一個模板設(shè)有多個緩存,當(dāng)值為1或2時啟動緩存。1告訴Smarty使用當(dāng)前的$cache_lifetime變量判斷緩存是否過期。2告訴Smarty使用生成緩存時的cache_lifetime值。建議在項目開發(fā)過程中關(guān)閉緩存,將值設(shè)置為0
第11-12行:設(shè)置smarty語言的左右結(jié)束符,我們知道大括號是smarty的默認定界符,但在和javascript、css等結(jié)合時可能會產(chǎn)生沖突,所以這里我們設(shè)定為<{和}>。
3、建立一個模板文件
一般情況下在美工頁面設(shè)計完畢后,雙方的交集點是模版文件,雙方約定后,程序員不需要花太大的精力在前臺,這就是使用Smarty模板引擎進行開發(fā)的好處。
我們首先建立一個簡單的模版文件,名為leapsoul.tpl,你可在html文件中加入smarty變量后將文件另存為tpl類型的文件。
- <html>
- <head>
- <meta http-equiv="Content-type" content="text/html; charset=gb2312">
- <title>
- <{ $title }>
- </title>
- </head>
- <body>
- <{ $content }>
- </body>
- </html>
注釋:在這個tpl文件中設(shè)定了title和content兩個smarty變量,文件保存為leapsoul.tpl,同時將其保存在test\smarty\tpls\templates模板文件目錄下。
4、建立應(yīng)用程序文件
模版文件類似于一個表現(xiàn)層,在建立完模板文件后,我們需要一個應(yīng)用程序去驅(qū)動表現(xiàn)層,應(yīng)用程序文件定義為smarty.php。
- <?
- include("smarty/main.php");
- $tpl->assign("title", "leapsoul.cn為你展示smarty模板技術(shù)");
- $tpl->assign("content", "leapsoul.cn通過詳細的安裝使用步驟為你展示smarty模板技術(shù)");
- $tpl->display("leapsoul.tpl");
- ?>
注釋:
在這段代碼中我們主要用到smarty中的兩個函數(shù)assign和display,assign你可以理解為為變量賦值,display主要是用來將網(wǎng)頁輸出。更多smarty函數(shù)今后會詳細介紹。
其他說明
由于我們開啟了緩存功能,有興趣的朋友可以打開cache和templates_c,cache目錄存放了這個模板的緩存文件,文件開頭部分有緩存信息,如文件的生成時間和過期時間等,其他的和一般的HTML文件沒有多大的區(qū)別,而templates_c存放了模板經(jīng)過編譯后的PHP執(zhí)行文件。
至此一個簡單入門的Smarty模板應(yīng)用實例就算介紹完成了。
原文地址:http://www.leapsoul.cn/?p=405
【編輯推薦】