smarty模板技術
smarty簡介:
smarty是php領域流行的一種模板技術,免費,其核心就是一個類(smarty類)。
我們的主要目標就是學習怎麽使用這個類。
smarty的特點:
速度快(因為第二次執行的時候使用第一次執行時生成的編譯文件)
緩存技術(正是因為緩存技術,使得smarty模板技術不太適合那些對於實時性更新要求比較高的,比如股票信息)
插件技術(正是因為插件技術,使得smarty可以被擴展)
編譯型(訪問一個頁面一次之後會生成一個編譯文件,第二次再來訪問這個頁面的時候,就會訪問這個編譯文件,從而提高訪問速度);
$smarty->assign(‘變量名‘,數據)
smarty內部變量:
$smarty.now:獲取當前時間,是一個時間戳(整數)
$smarty.get:獲取到$_GET數據,$smarty.get.xx相當於$_GET[‘xx‘]
$smarty.post:獲取到$_POST數據, $smarty.post.xx相當於 $_POST[‘xx’]
$smarty.cookies:獲取到$_COOKIE數據, $smarty.cookies.xx相當於 $_COOKIE[‘xx’]
$smarty.session:獲取到$_SESSION數據, $smarty.session.xx相當於 $_SESSION[‘xx’]
$smarty.const: 獲取到php程序中的常量數據
$smarty.config:獲取到配置數據
內建函數:
就是寫在模板文件中,用於實現一定功能的smarty語句或語法。
模板文件中,有時候不是簡單的“輸出數據”,而可能還會需要一些其他的功能。內建函數就起這個作用。
跟前面的變量對比來說:
變量(數據)只是單純的輸出,
但:
內建函數並不是輸出數據,而是在模板中實現某種功能,
,比如:
載入配置文件,實現if判斷,實現循環邏輯。。。。
常用內置函數有:
{config_load}:載入配置文件。
{include}:載入(引入)其他模板文件到當前模板文件。
{if}:用於實現if語句。
{for}:用於實現循環。
{foreach}:用於對數組進行遍歷。
{while}:用於實現循環。
{literal}:用於標識一段代碼排除在smarty的處理邏輯中——即不被smarty處理!通常就是css代碼和js代碼中的大括號,跟smarty的大括號有沖突,用此來解決。
literal函數的使用:
對於解決smarty與跟css(和js)語法的可能沖突,還有一個方法:
修改smarty的“邊界符”;
$smarty->left_delimiter = “<{“;
$smarty->right_delimiter = “}>“;
則所有的模板中的smarty邊界符都要按上述來做,比如:
<{$v1}>
<{if $age > 18 }>
。。。。。
<{/if}>
自定義函數:
也是函數,只是不作為smarty裏模板文件中的核心函數,它常常用於構建並輸出一些html代碼內容。
smarty常量:
template_dir:表示“模板文件所在目錄”;
template_dir:表示“模板文件所在目錄;
left_delimiter:表示smarty語法的左邊界。
left_delimiter:表示smarty語法的左邊界。
smarty常用方法:
assign():變量賦值
display():加載模板
setTemplateDir():設置模板目錄
setCompileDir():設置編譯目錄
getTemplateDir():獲取模板目錄
getCompileDir():獲取編譯目錄
~~~~~~~~~~~~~~~
smarty模板技術