PHP模板引擎Smarty內建函數詳解_php執行個體

來源:互聯網
上載者:User
本文執行個體講述了PHP模板引擎Smarty內建函數。分享給大家供大家參考,具體如下:

Smarty 的內建函數:Smarty內建一些內建函數,內建函數是範本語言的一部分,使用者不能建立名稱和內建函數一樣的自訂函數,也不能修改內建函數。

下面對 Smarty 中的內建函數進行說明,並加以執行個體:

執行個體中使用到的 Smarty 模板引擎初始設定檔案 init.inc.php 和主檔案 index.php

init.inc.php

<?php  define('ROOT_PATH', dirname(__FILE__)); //設定網站根目錄  require ROOT_PATH.'/libs/Smarty.class.php'; //載入 Smarty 模板引擎  $_tpl = new Smarty(); //建立一個執行個體對象  $_tpl->template_dir = ROOT_PATH.'/tpl/'; //重新指定模板目錄  $_tpl->compile_dir = ROOT_PATH.'./com/'; //重新指定編譯目錄  $_tpl->left_delimiter = '<{'; //重新指定左定界符  $_tpl->right_delimiter = '}>'; //重新指定右定界符?>

index.php

<?php  require 'init.inc.php'; //引入模板初始設定檔案  global $_tpl;  $_tpl->display('index.tpl'); //引入模板?>

1、capture

屬性 類型 是否必須 預設值 描述
name string no default 資料擷取地區名稱
assign string No n/a 資料擷取地區在哪分配給變數name[待考]

/tpl/index.tpl

Capture      <{capture name="foo"}>     這裡是 capture 函數裡面的內容,預設是不顯示的。   <{/capture}>      <{$smarty.capture.foo}>

2、config_load

屬性 類型 是否必須 預設值 描述
file string Yes n/a 待包含的設定檔的名稱
section string No n/a 設定檔中待載入部分的名稱
scope string no local 載入資料的範圍,取值必須為local, parent 或 global. local 說明該變數的範圍為當前模板. parent 說明該變數的範圍為當前模板和當前模板的父模板(調用當前模板的模板). global 說明該變數的範圍為所有模板.
global boolean No No 說明載入的變數是否全域可見,等同於 scope=parent. 注意: 當指定了 scope 屬性時,可以設定該屬性,但模板忽略該屬性值而以 scope 屬性為準。
config_load 函數用於從設定檔中載入變數,關於 config_load 函數的使用,可參考前面一篇《PHP模板引擎Smarty之設定檔在模板變數中的使用方法樣本》。

3、include

屬性 類型 是否必須 預設值 描述
file string Yes n/a 待包含的模板檔案名稱
assign string No n/a 該屬性指定一個變數儲存待包含模板的輸出
[var ...] [var type] No n/a 傳遞給待包含模板的本地參數,只在待包含模板中有效

include 函數用於在當前模板中包含其它模板, 當前模板中的變數在被包含的模板中可用. 必須指定 file 屬性,該屬性指明模板資源的位置。如果設定了 assign 屬性,該屬性對應的變數名用於儲存待包含模板的輸出,這樣待包含模板的輸出就不會直接顯示了。請看下面的樣本:

/tpl/index.tpl

{include file="header.tpl"}{* body of template goes here *}{include file="footer.tpl"}

4、if,elseif,else

Smarty 中的 if 語句和 php 中的 if 語句一樣靈活易用,並增加了幾個特性以適宜模板引擎. if 必須於 /if 成對出現. 可以使用 else 和 elseif 子句。

可以使用以下條件修飾詞:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、==、!=、>、<、<=、>=. 使用這些修飾詞時必須和變數或常量用空格格開。

下面對這些修飾符表示的意思進行說明:

條件修飾符 作用描述
eq ==
ne !=
neq !=
gt >
lt <
lte <=
le <=
gte >=
ge >=
is even 是否偶數
is odd 是否奇數
is not even 是否不是偶數
is not odd 是否不是奇數
not !=
mod 求模
div by 是否能被整除
even by 商是否是偶數
odd by 商是否是奇數
&&
||
() 括弧改變優先順序

5、ldelim 和 rdelim

用於輸出分隔字元,也就是大括弧 "{" 和 "}". 模板引擎總是嘗試解釋大括弧內的內容,因此如果需要輸出大括弧,請使用此方法。請看下面的樣本:

/tpl/index.tpl

ldelim 和 rdelim  <{ldelim}>funcname<{rdelim}> 是 Smarty 中的一個函數。  

6、literal

literal 標籤地區內的資料將被當作文本處理,此時模板將忽略其內部的所有字元資訊. 該特性用於顯示有可能包含大括弧等字元資訊的 javascript 指令碼. 當這些資訊處於 {literal}{/literal} 標籤中時,模板引擎將不分析它們,而直接顯示,其實按照我的所有例子中的標籤風格(因為在 init.inc.php 初始設定檔案中已經重新設定了左定界符和右定界符),而不是 Smarty 的預設風格,基本上不會產生這種情況。關於該函數的使用,請看下面的樣本

/tpl/index.tpl

literal  <{literal}>    <{/literal}>

7、php

php 標籤允許在模板中直接嵌入 php 指令碼,此標籤會把標籤內部的內容當成 PHP 指令碼進行解析執行。請看下面的樣本

/tpl/index.tpl

php  <{php}>    echo date("Y-m-d H:i:s");  <{/php}>  

8、strip

Web 開發人員多次遇到空格和斷行符號影響HTML輸出的情形,為了得到特定的結果,因此你不得不在模板裡運行所有的標籤. 通常在難以理解或難以處理的模板中遇到此問題。Smarty 在顯示前將除區任何位於 {strip}{/strip} 標記中資料的首尾空格和斷行符號. 這樣可以保證模板容易理解且不用擔心多餘的空格導致問題。

好了, Smarty 模板引擎中的內建函數先總結這麼多,關於內建函數中兩個最重要的函數(foreach,foreachelse、section,sectionelse)的使用,可參考前面一篇《PHP模板引擎Smarty內建函數foreach,foreachelse用法分析》

更多關於PHP相關內容感興趣的讀者可查看本站專題:《smarty模板入門基礎教程》、《PHP模板技術總結》、《PHP基於pdo操作資料庫技巧總結》、《PHP運算與運算子用法總結》、《PHP網路編程技巧總結》、《PHP基本文法入門教程》、《php物件導向程式設計入門教程》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》

希望本文所述對大家基於smarty模板的PHP程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.