溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PHP中如何使用Smarty內(nèi)建函數(shù)

發(fā)布時(shí)間:2021-07-14 15:53:35 來(lái)源:億速云 閱讀:141 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)PHP中如何使用Smarty內(nèi)建函數(shù),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

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

實(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)建一個(gè)實(shí)例對(duì)象
  $_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

屬性類(lèi)型是否必須缺省值描述
namestringnodefault數(shù)據(jù)采集區(qū)域名稱(chēng)
assignstringNon/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)容,默認(rèn)是不顯示的。
   <{/capture}>
   <!-- 調(diào)用capture,使用的是 Smarty 中的保留變量{$smarty.capture} -->
   <{$smarty.capture.foo}>
</body>
</html>

2、config_load

屬性類(lèi)型是否必須缺省值描述
filestringYesn/a待包含的配置文件的名稱(chēng)
sectionstringNon/a配置文件中待加載部分的名稱(chēng)
scopestringnolocal加載數(shù)據(jù)的作用域,取值必須為local, parent 或 global. local 說(shuō)明該變量的作用域?yàn)楫?dāng)前模板. parent 說(shuō)明該變量的作用域?yàn)楫?dāng)前模板和當(dāng)前模板的父模板(調(diào)用當(dāng)前模板的模板). global 說(shuō)明該變量的作用域?yàn)樗心0?
globalbooleanNoNo說(shuō)明加載的變量是否全局可見(jiàn),等同于 scope=parent. 注意: 當(dāng)指定了 scope 屬性時(shí),可以設(shè)置該屬性,但模板忽略該屬性值而以 scope 屬性為準(zhǔn)。

config_load 函數(shù)用于從配置文件中加載變量,關(guān)于 config_load 函數(shù)的使用,可參考前面一篇《PHP模板引擎Smarty之配置文件在模板變量中的使用方法示例》。

3、include

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

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

/tpl/index.tpl

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

4、if,elseif,else

Smarty 中的 if 語(yǔ)句和 php 中的 if 語(yǔ)句一樣靈活易用,并增加了幾個(gè)特性以適宜模板引擎. if 必須于 /if 成對(duì)出現(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、==、!=、>、<、<=、>=. 使用這些修飾詞時(shí)必須和變量或常量用空格格開(kāi)。

下面對(duì)這些修飾符表示的意思進(jìn)行說(shuō)明:

條件修飾符作用描述
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ù)
&&
||
()括號(hào)改變優(yōu)先級(jí)

5、ldelim 和 rdelim

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

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

6、literal

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

/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 標(biāo)簽允許在模板中直接嵌入 php 腳本,此標(biāo)簽會(huì)把標(biāo)簽內(nèi)部的內(nèi)容當(dāng)成 PHP 腳本進(jìn)行解析執(zhí)行。請(qǐng)看下面的示例

/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>

上述就是小編為大家分享的PHP中如何使用Smarty內(nèi)建函數(shù)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI