什么是 Smarty?
为何使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成教程
Smarty 是 PHP 的模板引擎。更具体地说,它提供了一个可控的方式分离应用程序逻辑及内容,将其从展示中分离出去。其中描述得最好的情况是应用程序程序员和模板设计人员扮演着不同的角色,或者在大多数情况下两者不是同一人。
例如,假设你正在创建一个用于展示新闻文章的网页。
文章 $headline
、$tagline
、$author
和 $body
是内容元素,它们不包含任何有关它们将如何展示的信息。它们通过应用程序传给了 Smarty 并在其中传递给了。
然后,模板设计人员编辑模板,并使用 HTML 标记和模板标记的组合来设置这些变量的展示形式,其中使用的元素包括表格、div、背景颜色、字体大小、样式表、svg 等。
有一天,程序员需要更改提取文章内容的方式,即更改应用程序逻辑。此次更改不会影响模板设计人员,内容将在模板中仍以完全相同的方式出现。
同样,如果模板设计人员想要彻底重新设计模板,这将不需要对应用程序逻辑进行任何更改。
因此,程序员可以更改应用程序逻辑,而无需重新配置模板,而模板设计人员可以更改模板,而无需中断应用程序逻辑。
Smarty 的一项设计目标是分离业务逻辑和显示逻辑。
Smarty 的一些特性
它非常快。
它很有效率,因为 PHP 解析器会做繁重的工作。
没有模板解析开销,只编译一次。
它智能地仅重新编译已更改的模板文件。
可配置模板{delimiter}标签语法,因此你可以使用{$foo}
、{{$foo}}
、<!--{$foo}-->
等。
{if}..{elseif}..{else}..{/if}
构造传递到 PHP 解析器,因此{if...}
表达式的语法可以像你希望的那样简单或复杂。
允许无限嵌套 sections
, if's
等。
内置缓存支持
任意模板来源
模板继承用于轻松管理模板内容。
插件架构