亚洲成色在线无码_中文字幕专区高清在线观看_国产精品视频一区二区三区四_国内自拍视频一区二区三区_伊人伊成久久人综合网小说

首頁 > 職業(yè)資格  > 

利用PHP引擎smarty

2023-01-09   來源:萬能知識網(wǎng)

PHP模板引擎smarty詳細介紹,本文講解了什么是smarty、smarty優(yōu)點、不適合使用smarty的地方、smarty目錄結(jié)構(gòu)及版本,需要的朋友可以參考下。


(相關資料圖)

一、什么是smarty?

smarty是一個使用PHP寫出來的模板PHP模板引擎,它提供了邏輯與外在內(nèi)容的分離,簡單的講,

目的就是要使用PHP程序員同美工分離,使用的程序員改變程序的邏輯內(nèi)容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程序的程序邏輯,這在多人合作的項目中顯的尤為重要。

二、smarty優(yōu)點:

1. 速度:采用smarty編寫的程序可以獲得最大速度的提高,這一點是相對于其它的模板引擎技術而言的。

2. 編譯型:采用smarty編寫的程序在運行時要編譯成一個非模板技術的PHP文件,這個文件采用了PHP與HTML混合的方式,在下一次訪問模板時將WEB請求直接轉(zhuǎn)換到這個文件中,而不再進行模板重新編譯(在源程序沒有改動的情況下)

3. 緩存技術:smarty選用的一種緩存技術,它可以將用戶最終看到的HTML文件緩存成一個靜態(tài)的HTML頁,當設定smarty的cache屬性為true時,在smarty設定的cachetime期內(nèi)將用戶的WEB請求直接轉(zhuǎn)換到這個靜態(tài)的HTML文件中來,這相當于調(diào)用一個靜態(tài)的HTML文件。

4. 插件技術:smarty可以自定義插件。插件實際就是一些自定義的函數(shù)。

5. 模板中可以使用if/elseif/else/endif。在模板文件使用判斷語句可以非常方便的對模板進行格式重排。

三、不適合使用smarty的地方:

1. 需要實時更新的內(nèi)容。例如像股票顯示,它需要經(jīng)常對數(shù)據(jù)進行更新,這類型的程序使用smarty會使模板處理速度變慢。

2. 小項目。小項目因為項目簡單而美工與程序員兼于一人的項目,使用smarty會喪失php開發(fā)迅速的優(yōu)點。

四、smarty目錄結(jié)構(gòu)及版本

打開smarty的官方的網(wǎng)站,www.smarty.net/download.php。下載Smarty 3.1.12。有tar.gz和zip分別適用于linux和windows版本。

下載好后Smarty-stable-3.1.12解壓縮會得到一個 Smarty-3.1.12 文件夾,里面有兩個主要文件夾demo和libs

demo文件夾為示例文件夾,里面包含默認文件夾結(jié)構(gòu),是我們要進行編寫程序代碼的主要文件夾。demo里文件夾的名稱都是smarty默認的目錄結(jié)構(gòu)名稱,可以通過改smarty對應屬性值,再把文件夾名改成我們想要的名稱。

libs為smarty代碼源文件夾,一般不動。

/libs/Smarty.class.php ?#主文件

/libs/sysplugins/ #內(nèi)部plugin

/libs /plugins/ ?#外部plugin,可自由擴充

/demo/cahce/ ?#放置緩存文件

/demo/configs / ?#放置可以載入的配置文件

/demo/templates/ ?#放置模板文件

/demo/templates_c/ ?#放置對模板編譯后的文件

可以把解壓得到的 Smarty-3.1.12 文件夾名改成我們想要的項目名,demo也可以改成我們想要的具體存放編碼的文件夾的名稱

2、調(diào)試Smarty-3.1.12

創(chuàng)建自己的文件,在demo文件夾下創(chuàng)建index.php。

在templates目錄中創(chuàng)建模板index.tpl

(幾乎可以是任何文本文件的擴展名,常用的是tpl,php,html,不建議使用后兩者,因為可以從瀏覽器直接訪問而不安全??梢詫pache的httpd.conf進行設置,禁止直接訪問.tpl文件?;蛘邔emplats目錄放在網(wǎng)站文檔樹之外。)

*/

//index.php代碼

require("../libs/Smarty.class.php");

$smarty = new Smarty;

//在調(diào)用的模板里可以通過{$name}來輸出name的值zhang,{}為這里的smarty分界符

$smarty->assign("name","zhang");

//調(diào)用模板tpl文件里不能執(zhí)行PHP語句塊

$smarty->display("templates/index.tpl");

/*

index.tpl頁面內(nèi)容

你好, {$name}

*/

/*

Smarty編譯時的處理過程是源php文件->模板文件(可能調(diào)用多個或多次)->源php文件。。。

也就是說不影響原php文件的其他處理和輸出。所以smarty模板文件可以是完整的html,也可以是其中一部分。

smarty處理過程

smarty將php源文件,首先編譯成中間文件(也是php),如果啟用緩存,再根據(jù)編譯文件生成緩存文件(也是php),需要緩存的部分全部是硬編碼。

之后的每次訪問都會訪問編譯文件(如果編譯文件已經(jīng)存在),一次編譯多次調(diào)用(可以是單文件的多次,也可以是多文件的多次),如果啟用緩存且有緩存文件而且沒有過期,則直接訪問緩存文件,跳過編譯文件。

編譯文件一經(jīng)生成,就不會被自動更新,除非模板文件或者配置文件更改。源php文件修改是不會引發(fā)重新編譯的。一旦編譯文件重新生成,緩存文件也必然重新生成。

*/

//Smarty允許有兩種特殊的編譯設置存在:

//1、 任何時候都不自動重新編譯(上線階段):只有沒有該文件的編譯文件時才生成,模板文件或者配置文件的更改,不會引發(fā)重新編譯。

$smarty->setCompile_check(false);//默認為true,false表示任何時候都不在文件發(fā)生變更的情況下生成編譯文件,除了無編譯文件。

$smarty->getCompile_check();//獲得當前編譯檢查的設置

//2、任何時候都重新編譯(調(diào)試階段):任何時候都重新編譯。

$smarty->setForce_compile(true);//默認為false,true表示每次都重新編譯(啟用緩存的話,每次都重新緩存)

$smarty->getForce_compile();//獲得當前強制編譯的設置

//開啟緩存

$smarty->setCaching(true);

$smarty->getCaching();//獲取當前緩存狀態(tài),默認是false關閉的

$smarty->setcache_lifetime(60);//設置緩存時間單位秒

//{*模版文件*}

//{nocache}

//{$name}

//{/nocache}

//{*如果開啟緩存的話放在nocache標簽內(nèi)的變量不會緩存,每次讀取PHP源文件的值*}

/*

smarty分界符

在模板文件中,區(qū)分普通html代碼和smarty代碼靠的是分界符。默認是 {} ,但可能會與js和css相沖突。可以進行變更。

在3.0中模板標簽將不支持空格,如{ $abc }在Smarty2中可以識別的,但是3.0里頭就不行了,必須這樣{$abc},這樣是為了能夠更好的支持javascript和css。

*/

$smarty->left_delimiter = "{"; ?//左分界符,2.0屬性,3.0沿用

$smarty->right_delimiter = "}";

/*

詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域?qū)I(yè)人士。

推薦詞條