Smarty字符串資源

2018-12-09 11:50 更新

字符串資源

Smarty可使用string: 或 eval:的資源類型, 來(lái)從一個(gè)字符串中獲得模板內(nèi)容。

  • string:資源看起來(lái)和文件模板差不多。 字符串資源將被編譯并存儲(chǔ)成編譯代碼文件,以供重用。 每個(gè)獨(dú)立的模板字符串將創(chuàng)建一個(gè)新的編譯文件。 如果你的模板字符串被經(jīng)常存取,這是一個(gè)好的選擇。 如果你的模板字符串經(jīng)常被修改(或者字符串很少機(jī)會(huì)被重用), 那么使用eval:是一個(gè)更好的選擇, 因?yàn)樗粫?huì)保存編譯文件到磁盤。

  • eval:資源在每次頁(yè)面渲染的時(shí)候都會(huì)運(yùn)行。 當(dāng)字符串不常重用的情況下,這是一個(gè)好的選擇。 如果同樣的字符串經(jīng)常被存取,那么string:會(huì)是一個(gè)更好的選擇。

溫馨提示

使用string:的資源,每個(gè)字符串都會(huì)生成一個(gè)編譯文件。 Smarty無(wú)法檢查一個(gè)字符串是否已修改,所以只能為每個(gè)獨(dú)立的字符串都生成一個(gè)新的編譯文件。 選擇一個(gè)好的資源類型是很重要的,可避免你的磁盤塞滿浪費(fèi)的編譯文件。

Example 16.5. 使用字符串資源

<?php
 $smarty->assign('foo','value');
 $template_string = 'display {$foo} here';
 $smarty->display('string:'.$template_string); // 下次使用時(shí)編譯
 $smarty->display('eval:'.$template_string); // 每次都編譯
?>

在模板內(nèi)使用

{include file="string:$template_string"} {* 下次使用時(shí)編譯 *}
{include file="eval:$template_string"} {* 每次都編譯 *}

string: 和 eval:的資源都可以通過(guò) urlencode() 或 base64_encode() 來(lái)進(jìn)行編碼。 通常情況下編碼是不需要的,但當(dāng)和擴(kuò)展模板資源 一起使用的時(shí)候,那么就需要進(jìn)行編碼了。

Example 16.6. 使用編碼后的字符串資源

 <?php
  $smarty->assign('foo','value');
  $template_string_urlencode = urlencode('display {$foo} here');
  $template_string_base64 = base64_encode('display {$foo} here');
  $smarty->display('eval:urlencode:'.$template_string_urlencode); // 將通過(guò) urldecode() 解碼
  $smarty->display('eval:base64:'.$template_string_base64); // 將通過(guò) base64_decode() 解碼
 ?>

在模板內(nèi)使用

 {include file="string:urlencode:$template_string_urlencode"} {* 將通過(guò) urldecode() 解碼 *}
 {include file="eval:base64:$template_string_base64"} {* 將通過(guò) base64_decode() 解碼 *}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)