您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關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
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Capture</title> </head> <body> <!-- 定義capture --> <{capture name="foo"}> 這里是 capture 函數里面的內容,默認是不顯示的。 <{/capture}> <!-- 調用capture,使用的是 Smarty 中的保留變量{$smarty.capture} --> <{$smarty.capture.foo}> </body> </html>
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
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ldelim 和 rdelim</title> </head> <body> <{ldelim}>funcname<{rdelim}> 是 Smarty 中的一個函數。 <!-- 執行結果: <{funcname}> 是 Smarty 中的一個函數。 --> </body> </html>
6、literal
literal 標簽區域內的數據將被當作文本處理,此時模板將忽略其內部的所有字符信息. 該特性用于顯示有可能包含大括號等字符信息的 javascript 腳本. 當這些信息處于 {literal}{/literal} 標簽中時,模板引擎將不分析它們,而直接顯示,其實按照我的所有例子中的標簽風格(因為在 init.inc.php 初始化文件中已經重新設置了左定界符和右定界符),而不是 Smarty 的默認風格,基本上不會產生這種情況。關于該函數的使用,請看下面的示例
/tpl/index.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>literal</title> </head> <body> <{literal}> <script language=javascript> <!-- window.alert(new Date()); --> </script> <{/literal}> </body> </html>
7、php
php 標簽允許在模板中直接嵌入 php 腳本,此標簽會把標簽內部的內容當成 PHP 腳本進行解析執行。請看下面的示例
/tpl/index.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>php</title> </head> <body> <{php}> echo date("Y-m-d H:i:s"); <{/php}> <!-- 執行結果: 2011-10-24 04:35:03 --> </body> </html>
上述就是小編為大家分享的PHP中如何使用Smarty內建函數了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。