分离 PHP 应用程序中的形式与功能

 

     Smarty,它是最流行的 PHP 模板引擎之一。Smarty “代码” 有它自己的语法和运算符扩展列表,但是系统并不难学。阅读或浏览 Smarty 文档,以便熟悉它的所有功能。从 Smarty 的小修改开始,根据需求扩展您的技能,然后越来越精通。

 

     Smarty 有两个方面:PHP 应用程序编程接口 (API) 和显示引擎。应用程序代码将调用 API 把代码变量与模板占位符关联起来,而显示引擎将解释 Smarty 标记、执行循环、引用占位符和显示最终结果。Smarty 功能包括:

用于显示 PHP 的所有基本数据结构的运算符
显示简单变量,迭代整个数组或关联数组,以及显示类的成员。
占位符的默认值
如果 PHP 代码没有将变量与占位符关联,则显示默认值。
控制运算符,例如 ifthenelse,可以根据输入数据选择动态显示哪些内容
例如,设计人员可以选择用加粗的红色文本显示负账户余额,而用黑色文本显示正余额。您可以在模板中隔离此类显示逻辑(使您可以更轻松地进行开发)。
循环控制,它将提供用于简化构建列表和表的特殊变量
例如,可以测试循环的第一次迭代并创建表头。还可以像循环迭代一样循环执行值轮循 (round-robin) 列表,循环迭代非常适于改变表行的颜色。
渲染时用于改变数据的修饰符
例如,可以用 Smarty 标记 <strong>{$name|upper}</strong> 大写加粗显示占位符 —— 如 $name

<strong> 是普通 HTML。大括号 ( {}) 用于划定 Smarty 标记, $name 是占位符,而 |upper 是修饰符。还可以编写自己的修饰符以扩展 Smarty 的功能。

如果必须 包括脚本和原始 PHP 代码,可以用 literalphp 运算符来完成
literal 运算符内的所有内容都将被逐字传递给最终页面。 php 运算符中放置的代码将像嵌入到 <?php ... ?> 转义符内一样执行。

Smarty 模板采用了若干个 Smarty 运算符:
{include file='filename'}
像是 PHP 自己的 include() 方法一样运行,在适当的位置立即插入和解释 filename 的内容。虽然并未显示,但是可以将变量从一个模板传递给另一个模板,这样做鼓励重用。
{$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} 的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值