Smarty 是什么?
为什么使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
用例和工作流程是您在决定 Smarty 是否适合您的项目时需要考虑的重要因素。我们会在下面概述一些用例。
假设我们要托管大量大学报纸网站。每个大学(通常每学期都有新一批学生)的网页设计师都会参与编辑其网站的外观与视觉效果。他们通过将 HTML、图像等文件传输至网站服务器或从网站服务器获取这些文件来完成这项工作。公开 PHP 代码很容易让恶意代码(有意或无意)进入模板,从而给服务器的可靠性和数据带来风险。这正是 Smarty 最初设计时打算解决的业务问题。Smarty 可以限制设计师只能使用模板语言的功能。用户可以维护模板,无论其对 PHP 了解与否。
以内容管理系统或 Wiki 为例,其中完全没有经验的用户要更改网站模板和页面。与 PHP 语句相比,Smarty 标签更容易理解和自定义。
这也是 Smarty 的另一种常见用例。网页设计师(尤其是那些不熟悉 PHP 的设计师)通常会欢迎针对 HTML 管理的基于标签的语法。他们觉得这种语法更易于阅读、理解和维护。
PHP 开发人员通常并不热衷于将 PHP 代码与 HTML 代码混合使用。他们可能不会看出基于标签的语法的优点。除非有具体的业务问题适合使用 Smarty,否则在这种情况下,通常会选择将 PHP 代码与 HTML 代码混合使用。
如果网站开发完成后网站模板基本保持静态,特别是如果模板数量极少,并且 PHP 开发人员负责维护这些模板,那么 Smarty 通常不适合这类项目。例外情况是,如果开发人员偏好基于标签的模板,或有具体业务问题适合使用 Smarty。
应用程序代码库在使用 Smarty 的选择中也会起很大作用。您可能有一个正在使用的自定义框架,或者使用诸如 Zend、PHPCake 或 Code Igniter 等第三方开发平台。请自问:Smarty 与代码库之间有多少重叠?Smarty 有许多值得考虑的功能,而其他框架可能无法直接提供:灵活且精细的缓存、模板继承以及与 PHP 分离开(仅举几例)。
开发流程在模板需求中起很大的作用。对于项目较小的非常小的业务而言,身兼数职的人员可能为其工作得很好。但随着业务的增长和更多项目的纳入,在某些时候需要平衡流程来保持效率。谁编写 PHP 代码?谁编写 HTML/JS/CSS?谁制作标识并设计布局?这些通常是三个不同的专业领域,而且通常最好将它们分开。“后端”开发人员是精通 Linux、Apache、MySQL 和 PHP(也称为 LAMP/WAMP/MAMP)的人员。“前端”开发人员是精通 HTML、CSS、Javascript、Web 浏览器兼容性、HTML 标准合规性和无障碍性合规性的人员。图形设计师是熟悉徽标设计和网页布局以及特定软件包的人员(例如 Adobe Photoshop 和 Adobe Illustrator)。显然有重叠,但这是基本的角色细分。当事情变得繁忙时,试图将其中任何两个角色混为一体可能会导致您的工作流程产生手风琴效应。一旦角色建立起来,您的工作流程、业务需求、开发人员偏好和 PHP 框架将引导您确定 Smarty 是否合适的选择。