ECJiaWiki:Smarty:为什么选择Smarty?

来自ECJiaWiki
跳转至: 导航搜索
ECJia到家Smarty模版手册导航
为什么选择Smarty?
基本语法-变量
基本语法-函数
基本语法-属性
基本语法-双引号中嵌入变量
基本语法-数学计算
从PHP赋值的变量
Smarty保留变量
变量修饰器
内置函数
自定义函数

为什么选择Smarty?

谈到为什么选择Smarty,我们来看一下Smarty官方的介绍吧。

Smarty是什么?

Smarty是一个PHP的模板引擎。更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示。最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不是同一个人的情况。

举个例子,现在你要制作一个页面来显示新闻内容。

  • 文章内有$headline, $tagline, $author 和 $body等各部分内容, 这些内容没有包括它们如何被显示的信息。 程序将它们传递给Smarty。
  • 然后,模板设计师编辑模板,使用HTML标签和 模板标签,来对这些内容进行排版显示, 如表格、DIV、背景颜色、字体大小、样式表、SVG等等。
  • 当有一天,程序员需要改变文章数据内容的获取方式,也就是修改程序逻辑。 那么这个改变不会影响到模板设计师的工作,内容还是会传递到模板。
  • 同样的,如果模板设计师想要完全重新设计模板,也可以做到完全不需要修改程序逻辑。
  • 所以,程序员可以改变程序逻辑,而不需要调整模板页面; 模板设计师也可以修改模板,而不会打断程序逻辑。
  • 业务逻辑和显示逻辑分离,是Smarty的一个设计理念。
  • 这意味着模板可以包含部分仅作为显示用的逻辑代码。 这些显示逻辑如:包含 其他模板,交替设置表格每行的颜色, 把变量转为 大写字母, 循环遍历数组并 显示出来。
  • Smarty也不是无论如何也强制分离业务和显示逻辑。毕竟Smarty 无法知道谁是谁,所以,会不会把业务逻辑放到模板也是看你怎么处理。
  • 同时,如果你希望在你的模板里没有任何的逻辑代码,你也可以 把模板写成仅剩下文字和变量。

Smarty的一些特性

  • 非常快速。
  • 比PHP内嵌到HTML中的做法要有效率的多。
  • 无模板解析的开销,只编译一次。
  • 仅当模板文件被修改后才会聪明地重新编译。
  • 你可以很容易创建自己的函数 和 变量修饰器,非常具有可扩展性。
  • 可配置的模板定界符语法{delimiter}, 你可以使用{$foo}, {$foo}, {{$foo}},<!--{$foo}-->等等。
  • 条件判断语句 {if}..{elseif}..{else}..{/if} 会直接使用PHP解析,所以{if...}后可以是简单或者较复杂的表达式。
  • 支持无限的 sections, if等的嵌套。
  • 内置缓存支持。
  • 任意的模板源。
  • 模板继承 可以轻松管理模板和内容。
  • 插件架构。