Smarty,它是最流行的 PHP 模板引擎之一。Smarty “代码” 有它自己的语法和运算符扩展列表,但是系统并不难学。阅读或浏览 Smarty 文档,以便熟悉它的所有功能。从 Smarty 的小修改开始,根据需求扩展您的技能,然后越来越精通。
Smarty 有两个方面:PHP 应用程序编程接口 (API) 和显示引擎。应用程序代码将调用 API 把代码变量与模板占位符关联起来,而显示引擎将解释 Smarty 标记、执行循环、引用占位符和显示最终结果。Smarty 功能包括:
- 用于显示 PHP 的所有基本数据结构的运算符
- 显示简单变量,迭代整个数组或关联数组,以及显示类的成员。
- 占位符的默认值
- 如果 PHP 代码没有将变量与占位符关联,则显示默认值。
- 控制运算符,例如
- 例如,设计人员可以选择用加粗的红色文本显示负账户余额,而用黑色文本显示正余额。您可以在模板中隔离此类显示逻辑(使您可以更轻松地进行开发)。
if、then、else,可以根据输入数据选择动态显示哪些内容 - 循环控制,它将提供用于简化构建列表和表的特殊变量
- 例如,可以测试循环的第一次迭代并创建表头。还可以像循环迭代一样循环执行值轮循 (round-robin) 列表,循环迭代非常适于改变表行的颜色。
- 渲染时用于改变数据的修饰符
- 例如,可以用 Smarty 标记
<strong>{$name|upper}</strong>大写加粗显示占位符 —— 如$name。<strong>是普通 HTML。大括号 ({}) 用于划定 Smarty 标记,$name是占位符,而|upper是修饰符。还可以编写自己的修饰符以扩展 Smarty 的功能。
- 如果必须 包括脚本和原始 PHP 代码,可以用
literal运算符内的所有内容都将被逐字传递给最终页面。php运算符中放置的代码将像嵌入到<?php ... ?>转义符内一样执行。- Smarty 模板采用了若干个 Smarty 运算符: {include file='filename'}
- 像是 PHP 自己的
include()方法一样运行,在适当的位置立即插入和解释filename的内容。虽然并未显示,但是可以将变量从一个模板传递给另一个模板,这样做鼓励重用。
literal 和 php 运算符来完成 - {$person->GetProperty('name')}
- 假定
person与名为GetProperty()的方法相关。您可以调用对象的方法和引用对象成员,像{$person->quote}所做的那样。
- {section name=index loop=$placeholder}
- 在数组内迭代。
loop属性将给占位符命名,而name属性将指定一个名称以供数组索引使用。在循环内,将把数组元素作为{$placeholder[index]}来引用。
- foreach
- 像
section一样迭代,但是提供了一个非常优秀的功能来处理一组关联数组,例如数据库查询的行列表。每个关联数组都被 “转换” 到名为item的索引中。例如,在清单 5 中,person被命名为item。每执行一次循环,person就会被指定来自数组people的关联数组。在那之后,在整个循环过程中,可以通过关键字引用关联数组中的值,如{$person.signature}。
- foreach 中的 name 属性
- 类似于 HTML 标记的
id属性,它将惟一地识别循环。使用此 ID 来引用反映循环状态的特殊变量集。例如,一个特殊变量是first,它只在循环的第一次迭代时才被设定。因此,值$smarty.foreach.people.first将引用与名为people(people) 的foreach循环 (foreach) 关联的特殊 Smarty 变量 (smarty)。正如您可能会想到的那样,还有last值和iteration值,它们从 1 开始,并随每次迭代增加(如果需要从零开始的计数器,请使用index而不要使用iteration)。
- cycle
- 用于构建表的优秀运算符。如果提供
values列表,Smarty 将像循环迭代一样在所有值中循环。将循环添加到bgcolor中将改变每个表行的颜色可以使表更清晰。
- {foreachelse}
- 如果要迭代的数组为空,则转而显示
{foreachelse}...{/foreachelse}的内容。
本文介绍了流行的PHP模板引擎Smarty,详细解析了其API和显示引擎的工作原理。文章还深入探讨了Smarty的各种功能,如数据结构运算符、控制逻辑、循环控制等,并提供了如何使用自定义修饰符来扩展Smarty功能的方法。

被折叠的 条评论
为什么被折叠?



