What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
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
等的嵌套。
内置缓存支持。
任意的模板源。
模板继承 可以轻松管理模板和内容。
插件 架构。