Smarty字符串資源

2018-12-09 11:50 更新

字符串資源

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

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

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

溫馨提示

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

Example 16.5. 使用字符串資源

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

在模板內(nèi)使用

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

string: 和 eval:的資源都可以通過 urlencode() 或 base64_encode() 來進行編碼。 通常情況下編碼是不需要的,但當和擴展模板資源 一起使用的時候,那么就需要進行編碼了。

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); // 將通過 urldecode() 解碼
  $smarty->display('eval:base64:'.$template_string_base64); // 將通過 base64_decode() 解碼
 ?>

在模板內(nèi)使用

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號