Smarty 图标

您可以根据 商标声明 使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他查询,请通过以下方式与我们联系

使用 Smarty 的网站

广告

字符串模板资源

Smarty 可以使用 string:eval: 资源从字符串呈现模板。

  • string: 资源的行为与模板文件很相似。从字符串编译模板源,并存储编译后的模板代码以便以后重复使用。每个唯一的模板字符串都将创建一个新的编译后模板文件。如果频繁访问模板字符串,那么这是一个不错的选择。如果模板字符串经常发生变化(或重复使用价值很低),那么 eval: 资源可能是一个更好的选择,因为它不会将编译后的模板存储到磁盘中。

  • eval: 资源在每次呈现页面时都会评估模板源。对于重复使用价值很低的字符串,这是一个不错的选择。如果频繁访问同一个字符串,那么 string: 资源可能是一个更好的选择。

注意

对于 string: 资源类型,每个独特的字符串都会生成一个已编译文件。Smarty 无法检测到已更改的字符串,因此将为每个独特的字符串生成一个新的已编译文件。选择正确的资源非常重要,这样才不会用无用的已编译字符串填充磁盘空间。

示例 16.5。使用字符串中的模板

<?php
$smarty->assign('foo','value');
$template_string = 'display {$foo} here';
$smarty->display('string:'.$template_string); // compiles for later reuse
$smarty->display('eval:'.$template_string); // compiles every time
?>

  

来自 Smarty 模板

{include file="string:$template_string"} {* compiles for later reuse *}
{include file="eval:$template_string"} {* compiles every time *}


  

string:eval: 资源都可以使用 urlencode()base64_encode() 进行编码。通常使用 string:eval: 时不需要这样做,但在将其与 扩展模板资源 结合使用时就需要。

示例 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); // will decode string using urldecode()
 $smarty->display('eval:base64:'.$template_string_base64); // will decode string using base64_decode()
 ?>
 
   

来自 Smarty 模板

 
 {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
 {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}