Smarty 图标

你可以按照商标声明使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

请联系我们,了解赞助、广告、新闻或其他查询的信息:[email protected]

使用 Smarty 的网站

广告

第 1 章。Smarty 是什么?

Smarty 是 PHP 的模板引擎。更具体地说,它提供了一个可控的方式分离应用程序逻辑及内容,将其从展示中分离出去。其中描述得最好的情况是应用程序程序员和模板设计人员扮演着不同的角色,或者在大多数情况下两者不是同一人。

例如,假设你正在创建一个用于展示新闻文章的网页。

  • 文章 $headline$tagline$author$body 是内容元素,它们不包含任何有关它们将如何展示的信息。它们通过应用程序传给了 Smarty 并在其中传递给了。

  • 然后,模板设计人员编辑模板,并使用 HTML 标记和模板标记的组合来设置这些变量的展示形式,其中使用的元素包括表格、div、背景颜色、字体大小、样式表、svg 等。

  • 有一天,程序员需要更改提取文章内容的方式,即更改应用程序逻辑。此次更改不会影响模板设计人员,内容将在模板中仍以完全相同的方式出现。

  • 同样,如果模板设计人员想要彻底重新设计模板,这将不需要对应用程序逻辑进行任何更改。

  • 因此,程序员可以更改应用程序逻辑,而无需重新配置模板,而模板设计人员可以更改模板,而无需中断应用程序逻辑。

Smarty 的一项设计目标是分离业务逻辑和显示逻辑。

  • 这意味着模板可以在仅用于呈现的情况下包含逻辑。一些类似包含其他模板,交替表格行颜色,大写变量,循环数据数组和显示它是呈现逻辑的示例。

  • 然而,这并不意味着 Smarty 强制分离业务逻辑和呈现逻辑。Smarty 不知道哪个是哪个,因此将业务逻辑放在模板中是你的做法。

  • 此外,如果你希望没有模板中的逻辑,你可以通过将内容归结为仅文本和变量来实现。

Smarty 的一些特性

  • 它非常快。

  • 它很有效率,因为 PHP 解析器会做繁重的工作。

  • 没有模板解析开销,只编译一次。

  • 它智能地仅重新编译已更改的模板文件。

  • 你可以轻松创建自己的自定义函数变量修饰符,因此模板语言具有极强的扩展性。

  • 可配置模板{delimiter}标签语法,因此你可以使用{$foo}{{$foo}}<!--{$foo}-->等。

  • {if}..{elseif}..{else}..{/if}构造传递到 PHP 解析器,因此{if...}表达式的语法可以像你希望的那样简单或复杂。

  • 允许无限嵌套 sections, if's 等。

  • 内置缓存支持

  • 任意模板来源

  • 模板继承用于轻松管理模板内容。

  • 插件架构