国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP模板引擎Smarty內(nèi)建函數(shù)詳解

2024-05-04 23:44:57
字體:
供稿:網(wǎng)友
這篇文章主要介紹了PHP模板引擎Smarty內(nèi)建函數(shù)用法,結(jié)合實例形式分析了smarty中常見的內(nèi)建函數(shù)功能,定義與使用方法,需要的朋友可以參考下
 

本文實例講述了PHP模板引擎Smarty內(nèi)建函數(shù)。分享給大家供大家參考,具體如下:

Smarty 的內(nèi)建函數(shù):Smarty自帶一些內(nèi)建函數(shù),內(nèi)建函數(shù)是模板語言的一部分,用戶不能創(chuàng)建名稱和內(nèi)建函數(shù)一樣的自定義函數(shù),也不能修改內(nèi)建函數(shù)。

下面對 Smarty 中的內(nèi)建函數(shù)進行說明,并加以實例:

實例中使用到的 Smarty 模板引擎初始化文件 init.inc.php 和主文件 index.php

init.inc.php

<?php  define('ROOT_PATH', dirname(__FILE__)); //設(shè)置網(wǎng)站根目錄  require ROOT_PATH.'/libs/Smarty.class.php'; //加載 Smarty 模板引擎  $_tpl = new Smarty(); //創(chuàng)建一個實例對象  $_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 數(shù)據(jù)采集區(qū)域名稱
assign string No n/a 數(shù)據(jù)采集區(qū)域在哪分配給變量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 函數(shù)里面的內(nèi)容,默認是不顯示的。   <{/capture}>   <!-- 調(diào)用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 加載數(shù)據(jù)的作用域,取值必須為local, parent 或 global. local 說明該變量的作用域為當(dāng)前模板. parent 說明該變量的作用域為當(dāng)前模板和當(dāng)前模板的父模板(調(diào)用當(dāng)前模板的模板). global 說明該變量的作用域為所有模板.
global boolean No No 說明加載的變量是否全局可見,等同于 scope=parent. 注意: 當(dāng)指定了 scope 屬性時,可以設(shè)置該屬性,但模板忽略該屬性值而以 scope 屬性為準。
config_load 函數(shù)用于從配置文件中加載變量,關(guān)于 config_load 函數(shù)的使用,可參考前面一篇《PHP模板引擎Smarty之配置文件在模板變量中的使用方法示例》。

 

3、include

 

屬性 類型 是否必須 缺省值 描述
file string Yes n/a 待包含的模板文件名
assign string No n/a 該屬性指定一個變量保存待包含模板的輸出
[var ...] [var type] No n/a 傳遞給待包含模板的本地參數(shù),只在待包含模板中有效

 

include 函數(shù)用于在當(dāng)前模板中包含其它模板, 當(dāng)前模板中的變量在被包含的模板中可用. 必須指定 file 屬性,該屬性指明模板資源的位置。如果設(shè)置了 assign 屬性,該屬性對應(yīng)的變量名用于保存待包含模板的輸出,這樣待包含模板的輸出就不會直接顯示了。請看下面的示例:

/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 成對出現(xiàn). 可以使用 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 是否偶數(shù)
is odd 是否奇數(shù)
is not even 是否不是偶數(shù)
is not odd    是否不是奇數(shù)
not !=
mod 求模
div by 是否能被整除
even by 商是否是偶數(shù)
odd by 商是否是奇數(shù)
&&
||
() 括號改變優(yōu)先級

 

5、ldelim 和 rdelim

用于輸出分隔符,也就是大括號 "{" 和 "}". 模板引擎總是嘗試解釋大括號內(nèi)的內(nèi)容,因此如果需要輸出大括號,請使用此方法。請看下面的示例:

/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 中的一個函數(shù)。  <!-- 執(zhí)行結(jié)果: <{funcname}> 是 Smarty 中的一個函數(shù)。 --></body></html>

6、literal

literal 標簽區(qū)域內(nèi)的數(shù)據(jù)將被當(dāng)作文本處理,此時模板將忽略其內(nèi)部的所有字符信息. 該特性用于顯示有可能包含大括號等字符信息的 javascript 腳本. 當(dāng)這些信息處于 {literal}{/literal} 標簽中時,模板引擎將不分析它們,而直接顯示,其實按照我的所有例子中的標簽風(fēng)格(因為在 init.inc.php 初始化文件中已經(jīng)重新設(shè)置了左定界符和右定界符),而不是 Smarty 的默認風(fēng)格,基本上不會產(chǎn)生這種情況。關(guān)于該函數(shù)的使用,請看下面的示例

/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 腳本,此標簽會把標簽內(nèi)部的內(nèi)容當(dāng)成 PHP 腳本進行解析執(zhí)行。請看下面的示例

/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}>  <!-- 執(zhí)行結(jié)果: 2011-10-24 04:35:03 --></body></html>

8、strip

Web 開發(fā)者多次遇到空格和回車影響HTML輸出的情形,為了得到特定的結(jié)果,因此你不得不在模板里運行所有的標簽. 通常在難以理解或難以處理的模板中遇到此問題。Smarty 在顯示前將除區(qū)任何位于 {strip}{/strip} 標記中數(shù)據(jù)的首尾空格和回車. 這樣可以保證模板容易理解且不用擔(dān)心多余的空格導(dǎo)致問題。

好了, Smarty 模板引擎中的內(nèi)建函數(shù)先總結(jié)這么多,關(guān)于內(nèi)建函數(shù)中兩個最重要的函數(shù)(foreach,foreachelse、section,sectionelse)的使用,可參考前面一篇《PHP模板引擎Smarty內(nèi)建函數(shù)foreach,foreachelse用法分析



注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 焦作市| 崇信县| 新晃| 佛教| 科技| 姚安县| 永善县| 兰西县| 墨竹工卡县| 浦城县| 开化县| 陵川县| 同仁县| 石家庄市| 北宁市| 麻江县| 玉林市| 华安县| 黄龙县| 赞皇县| 咸宁市| 容城县| 南京市| 东辽县| 遂川县| 綦江县| 拜城县| 新龙县| 都江堰市| 北流市| 桦南县| 澎湖县| 江西省| 甘谷县| 昌黎县| 苍山县| 巫溪县| 金寨县| 当涂县| 仪征市| 西城区|