第一章 Smarty是什么?

    Smarty是PHP模板引擎。更确切的说,它提供了一种可管理的方式来将应用逻辑和内容分离于其呈现。这样的场景描述会更确切:应用程序员和模板设计者扮演不同的角色,或者在大多数情况下不是同一个人。

    例如,假定你正设计一个网页来显示一篇新闻稿。文章的标题,标签行,作者以及内容元素并不包含任何它们应该如何呈现的信息。它们由应用传递给Smarty,然后模板设计者编辑模板,并用HTML标记和模板标记的结合来提供这些元素的呈现格式(HTML表格,背景色,字体尺寸,样式表等)。某天,程序员需要改变文章内容获取的方式(应用逻辑的改变)。这个改变并不影响模板设计这,到达模板的内容还是完全一致。同样的,如果模板设计者需要完全重新定义模板,这也不需要应用逻辑的变化。因此,程序员可以修改应用逻辑而不用重新编排模板,而模板设计者可以修改模板而不用违反应用逻辑。

    Smarty的设计目标之一是分离商业逻辑和呈现逻辑。这意味着模板当然可以包含逻辑,只要它们只是为了呈现所用。诸如包含其它模板,改变表格行的颜色,将一个变量大写,循环一个数组并显示等都是呈现逻辑的例子。这不是说Smarty强迫商业逻辑和呈现逻辑的分离。Smarty不知道什么是什么,所以将商业逻辑防止在模板里是你自己的事情。同样的,如果你在模板中不需要任何逻辑,你当然可以将内容控制为仅仅是文本和变量而做到这点。

    有关Smarty的一个独特之处是模板编译。这意味着Smarty读入模板文件然后据此创建PHP脚本。一旦创建,将从此开始执行。因此,对于每个请求,没有代价昂贵的模板文件解析,而每个模板可以利用PHP编译缓存方案的好处(如Zend Acceleratorhttp://www.zend.com/或PHP Acceleratorhttp://www.php-accelerator.co.uk)。

    Smarty的一些特性: