Smarty是一个PHP的模板引擎。更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示。最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不是同一个人的情况。
举个例子,现在你要制作一个页面来显示新闻内容。
文章内有$headline
, $tagline
,
$author
和 $body
等各部分内容,
这些内容没有包括它们如何被显示的信息。
程序将它们传递给Smarty。
然后,模板设计师编辑模板,使用HTML标签和 模板标签,来对这些内容进行排版显示, 如表格、DIV、背景颜色、字体大小、样式表、SVG等等。
当有一天,程序员需要改变文章数据内容的获取方式,也就是修改程序逻辑。 那么这个改变不会影响到模板设计师的工作,内容还是会传递到模板。
同样的,如果模板设计师想要完全重新设计模板,也可以做到完全不需要修改程序逻辑。
所以,程序员可以改变程序逻辑,而不需要调整模板页面; 模板设计师也可以修改模板,而不会打断程序逻辑。
业务逻辑和显示逻辑分离,是Smarty的一个设计理念。
Smarty的一些特性:
非常快速。
比PHP内嵌到HTML中的做法要有效率的多。
无模板解析的开销,只编译一次。
仅当模板文件被修改后才会聪明地重新编译。
可配置的模板定界符语法{delimiter},
你可以使用{$foo}
, {{$foo}}
,
<!--{$foo}-->
等等。
条件判断语句
{if}..{elseif}..{else}..{/if}
会直接使用PHP解析,所以{if...}
后可以是简单或者较复杂的表达式。
支持无限的
sections
, if
等的嵌套。
内置缓存支持。
任意的模板源。
模板继承 可以轻松管理模板和内容。
插件 架构。