日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php smarty程序设计,Smarty程序设计-动态文件操作

發布時間:2023/12/14 php 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php smarty程序设计,Smarty程序设计-动态文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Smarty程序設計-動態文件操作

Smarty程序設計在動態PHP文件中進行操作,其功能可以分為兩種:一種功能是配置Smarty,如變量template_dir、$config_dir等;另一種功能是和Smarty模板之間的交互,如方法assign、display。

SMARTY_PATH常量

SMARTY_PATH常量定義Smarty類文件的完整系統路徑,如果沒有定義Smarty目錄,Smarty將會試著自動創建合適的值。如果定義了路徑必須要以斜線結束。該常量的應用是在Smarty的配置文件中,通過它獲取Smarty類的絕對路徑。

例如,在上小節創建的配置config.php中,就應用到這個常量。關鍵代碼如下:

define('BASE_PATH',$_SERVER['DOCUMENT_ROOT']);//定義服務器的絕對路徑

define('SMARTY_PATH',\Smarty\\');//定義Smarty目錄的絕對路徑

require BASE_PATH.SMARTY_PATH.'libs\Smarty.class.php';//加載Smarty類庫文件

Smarty程序設計變量

在Smarty中提供了很多的變量,這里只講解比較常用的幾個,如果讀者想詳細地了解Smarty變量,請參考Smarty的手冊。

$templte_dir:模板目錄。該目錄來存放Smarty模板,在前面的實例中,所有的.html文件都是Smaarty模板。模板的后綴沒有要求,一般為.html、.tpl等。

$compile_dir:編譯目錄。顧名思議,就是編譯后的模板和PHP程序所生成的文件默認路徑為當前執行文件所在的目錄下的templates_c目錄。進入到編譯目錄,可以發現許多“%%...%%index.hgtml.php”格式的文件。隨便打開一個這樣的文件可以發現,實際上Smaarty將模板和PHP程序又重新組合成一個混編頁面。

$cache_dir:緩存目錄。該目錄用來存放緩存文件。同樣,在cache目錄下可以看到生成的.html文件。如果caching變量開啟,那么Smarty將直接從這里讀取文件。

$config_dir:配置目錄。該目錄用來存放配置文件。

設計變量。該變量可以打開調試控制臺。只要在配置文件(config.php)中將$smarty->debugging設為TRUE即可使用。

$caching:緩存變量。該變量可以開啟緩存。只要當前模板文件和配置文件未被改動,Smarty就直接從緩存目錄中讀取緩存文件而不重新編譯模板。

Smarty方法

在Smarty提供的方法中,最常用的是assign方法和display方法。

1.assing方法

assing方法用于在模板執行時為模板變量賦值。語法如下:

{assign var ="" value=""}

參數var是被賦值的變量名,參數value是賦給變量的值。

display方法

display方法用于顯示模板,需要指定一個合法的模板資源的類型和路徑。還可以通過第二個可選參數指定一個緩存號,相關的信息可以查看緩存。

void display (string template[,string cache_id[,string complle_id]])

參數template指定一個合法的模板資源的類型和路徑;參數cache_id為可選參數,指定一個緩存號;參數compile_id為可選參數,指定編譯號。編譯號可以將一個模板編譯成不同版本使用,如針對不同的語言編譯模板。編譯號的另外一個作用是,如果存在多個$template_dir模板目錄,但只有一個$compile_dir編譯后存檔目錄,這時可以為每一個$template_dir模板目錄指定一個編譯號,以避免相同的模板文件在編譯后會互相覆蓋。相對于在每一次調用display()時都指定編譯號,也可以通過設置$compile_id編譯號屬性來一次性設定。

Smarty

在講解Smarty的緩存之前,先將它和Smarty的編譯過程做一個對比,讓讀者明白緩存到底意味著什么。

Smarty的編譯功能默認是開啟的,而Smarty緩存則必須由開發人員來開啟。

編譯的過程是將模板轉換為PHP腳本,雖然在模板沒有被修改的情況下,不會重新執行轉換過程,但這個編譯過的模板其實就是一個PHP腳本,只是減少了模板轉換的壓力,仍需要在邏輯層執行獲取數據的操作,而這個獲取數據的操作是耗費內存最大的。

緩存則不僅將模板轉換為PHP腳本,而且將模板內容轉換為靜態頁面,不僅減少了模板轉換的壓力,也不再需要在邏輯層執行獲取數據的操作。

這就是Smarty的緩存機制,它是一種更加理想的開發web程序的方法。下面就來學習這種技術。

1.創建緩存

開啟緩存的方法非常簡單,只要將Smarty對象中$config的值設置為TRUE即可,同時還要通過Smarty對象中的$cache_dir屬性指定緩存文件的存儲位置。操作代碼如下:

$smarty->caching=true;

$smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/';//定義緩存文件存儲位置

2.緩存的生命周期

緩存創建成功后,必須為它設置一個生命周期,如果它一直不更新,那么就沒有任何意義。設置緩存生命周期應用的是Smarty對象中的$cache_lifetime屬性,緩存時間以秒為單位,默認值是3600秒。操作代碼如下:

$smarty->caching=true;//開啟緩存

$smarty->cache_dir = BASE_PATH>SMARTY_PATH.'cche/';//定義緩存文件存儲位置

$smarty->cache_lifetime=3600//設置緩存時間為1小時

如果將$caching的值設置為2,那么就可以控制單個緩存文件各自的過期時間。

3.同一模板生成多個緩存

在實際的程序開發中,經常會遇到這樣的情況,同一個模板文件生成多個頁面。而此時要對多個頁面進行緩存,就用的是Smarty中的display()方法,通過該方法的第二個參數設置緩存號,有幾個不同的緩存號就有幾個緩存頁面。操作代碼如下:

$smarty->caching=true;//開啟緩存

$smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/';//定義緩存文件存儲位置

$smarty->cache_lifetime=3600;//設置緩存時間為1小時

$smarty->display('index.html',$_GET['id']);//將id作為第二個參數傳遞

4.判斷模板文件是否已被緩存

如果頁面已經被緩存,那么就可以直接調用緩存文件,而不再執行動態獲取數據和輸出的操作。為了避免在開啟緩存后,再次執行動態獲取數據和輸出操作給服務器帶來的壓力,最佳的方法就是應用Smarty對象中的is_cached()方法,判斷指定的模板是否存在緩存,如果存在則直接執行緩存中的文件,否則執行動態獲取數據和輸出的操作。操作代碼如下:

$smarty->caching=true;

if($smarty->is_cached('index.html')){//開啟緩存

//執行動態獲取數據和輸出的操作

}

$smrty->display('index.html');

你問我答:如何判斷同一模板中的多個緩存文件?

判斷同一模板中的多個緩存是否存在與同一模板生成多個緩存類似,都是以緩存號為依據。判斷同一模板的多個緩存是否存在應用is_cached()方法,通過該方法的第二個參數設置緩存號,判斷對應的緩存是否存在。其方法如下:

$smarty->caching=true;

$smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/';//定義緩存文件存儲位置

$smarty->cache_lifetime=3600;//設置緩存時間為1小時

if(!$smarty->is_cached('index.html',$_GET['id'])){

//執行動態獲取數據和輸出的操作

}

$smarty->display('index.html',$_GET['id']);//將id作為第二個參數傳遞

5.清除模板中緩存

緩存的清除有兩種方法,分別介紹如下。

(1)clear_all_cache()方法,清除所有模板緩存。其語法如下:

void clear_all_cache(int expire time)

可選參數expire time,可以指定一個以秒為單位的最小時間,超過這個時間的緩存都將被清除。

(2)clear_cache()方法,清除指定模板的緩存。其語法如下:

void clear_cache(string template[,string cache id[,string compile id [, int expire time]]])

如果這個模板有多個緩存,可以用第二個參數指定要清除緩存的緩存號,還可以通過第3個參數指定編譯號。可以把模板分組,以便可以方便地清除一組緩存。第4個參數是可選的,用來指定超過某一時間(以秒為單位)的緩存才會被清除。

例如,分別應用這兩種方法清除緩存。代碼如下:

$smarty->caching=true;//開啟緩存

$smarty->clear_all_cache();//清除所有緩存

$smarty->clear_cache('index.html');//清除index.html模板的緩存

$smarty->clear_cache('index.html','$_GET['id']');//清除index.html模板中一個指定緩存號的緩存

$smarty->display('index.html');//指定模板頁

總結

以上是生活随笔為你收集整理的php smarty程序设计,Smarty程序设计-动态文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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