跳至正文

理念

什么是 Smarty?

Smarty 是一个用于 PHP 的模板引擎,更准确地说,它以一种可管理的方式将应用逻辑和内容从其展示中分离出来。这在应用编程人员和模板设计人员扮演不同角色或大多数情况下不是同一个人时,可以得到最佳的描述。

例如,假设您正在创建一个显示报纸文章的网页。

  • 文章 $headline$tagline$author$body 是内容元素,它们包含的信息不会影响其展示方式。它们是 通过 应用传入 Smarty 的。

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

  • 有一天,程序员需要更改文章内容的检索方式,即应用逻辑发生改变。此改变不会影响模板设计人员,文章内容仍将以完全相同的方式到达模板。

  • 同样,如果模板设计人员希望彻底重新设计模板,则不需要对应用逻辑进行任何更改。

  • 因此,程序员可以在无需调整模板的情况下对应用逻辑进行更改,模板设计人员可以在不破坏应用逻辑的情况下对模板进行更改。

目标

Smarty 设计在很大程度上受到以下目标的推动:- 内容展现与应用程序代码的干净分离 - PHP 后端,Smarty 模板前端 - 补充 PHP,不取代它 - 加快程序员和设计人员的开发/部署 - 快速、易于维护 - 语法易于理解,无需 PHP 知识 - 灵活应对定制开发 - 安全性:与 PHP 隔离 - 免费、开源

两种思想

谈到 PHP 中的模板,基本上有两种思想流派。第一种流派宣称“PHP 是一个模板引擎”。此方法简单地将 PHP 代码与 HTML 混合在一起。虽然从纯脚本执行的角度来看,这种方法最快,但是许多人会认为在与 HTML 等标记标记混合后,PHP 语法混乱而复杂。

第二种流派宣称展示应该不包含任何编程代码,而应该使用简单的标记来指示应用程序内容出现的位置。此方法在其他模板引擎(甚至其他编程语言)中很常见,也是 Smarty 采用的方法。其理念是让模板完全专注于展示,不包含应用程序代码,并尽可能减少开销。

为什么将 PHP 从模板中分离出来很重要?

两大优势

  • 语法:模板通常包含诸如 HTML 的语义标记。PHP 语法适用于应用程序代码,但与 HTML 混合后会迅速退化。Smarty 的简单 {tag} 语法专门设计用于表达展示。Smarty 让你的模板专注于展示,而不是“代码”。这有利于更快的模板部署和更轻松的维护。Smarty 语法无需具备 PHP 的工作知识,并且对程序员和非程序员都是直观的。

  • 隔离:当 PHP 与模板混合时,对于可以注入模板的逻辑类型没有限制。Smarty 使模板与 PHP 隔离,创建了展示与业务逻辑的受控分离。Smarty 还具有安全功能,可以进一步强制对模板的限制。

Web 设计师和 PHP

一个常见问题:“网页设计人员无论如何都必须学习语法,为什么不学习 PHP?”当然,网页设计人员可以学习 PHP,事实上他们可能已经很熟悉它了。问题不在于他们是否有能力学习 PHP,而是将 PHP 与 HTML 混合之后会产生什么后果。如果设计人员使用 PHP,则很容易将不属于此处的代码添加到模板中(你刚给他们一把瑞士军刀,而他们本不需要一把刀。)你可以教他们应用程序设计的规则,但这可能并非他们真的需要学习的东西(现在他们已经是开发人员了!)PHP 手册还是一份不知所云的信息汇编。这就像把汽车的工厂组装手册交给汽车主人,而他们只需要用户手册一样。Smarty 确实为网页设计人员提供了他们需要的所有工具,并且赋予开发人员对这些工具的精细控制。基于标签的语法的简洁性也让设计人员容易接受,它帮助他们简化模板的组织和管理。