首页 理论教育PHPMVC开发实战:条件判断

PHPMVC开发实战:条件判断

【摘要】:主流的框架大多数都支持在视图模板中进行逻辑判断、比较等基本操作,ThinkPHP默认的视图引擎提供了非常丰富的逻辑运算判断、比较等标签。判断标签最终将由模板引擎转换成PHP判断语句,如以下代码所示。本节重点介绍了ThinkPHP提供的常用的判断标签,系统还有一些实用的标签,由于篇幅所限,这里就不一一讲述。

虽然多数的运算逻辑都在控制器和模型中完成,但在模板引擎渲染过程合理地进行一些逻辑判断不仅能提高代码的可读性,还能够提高程序的运行效率。主流的框架大多数都支持在视图模板中进行逻辑判断、比较等基本操作,ThinkPHP默认的视图引擎提供了非常丰富的逻辑运算判断、比较等标签。这些标签灵活易用,熟悉运算标签的使用将极大地提供开发效率,同时也让后台代码更加规范和整洁,下面分别介绍。

1.运算判断标签

在传统的PHP开发中,开发人员可以使用if等标签比较两个数值的大小,以便程序进行下一步的运算。在ThinkPHP视图引擎中,开发人员可以使用内置的标签实现运算判断,如表6-3所示。

表6-3 判断比较标签

978-7-111-42852-7-Part02-158.jpg

了解Smarty模板引擎的读者相信对这些标签并不陌生,这些标签都是由相应的单词缩写而成,如neq就是not equal的缩写。相比Smarty,在ThinkPHP视图模板中使用这些运算比较标签更加方便和灵活,如以下代码所示。

978-7-111-42852-7-Part02-159.jpg

如上述代码所示,在volist循环体中使用egt判断标签,表示只要输出user_id大于或等于2的记录。其中name属性表示比较源,value表示比较的目标,这两个属性都支持使用变量(包括系统变量)。需要注意的是,属性name在设置变量时不需要指定“$”符号,而value属性必须指定“$”符号。判断标签最终将由模板引擎转换成PHP判断语句,如以下代码所示。

978-7-111-42852-7-Part02-160.jpg

其他的判断标签使用方式一样,在此不做细述。判断标签还可以结合<else/>标签使用,这样就可以实现类似于if…else的效果了,如以下代码所示。

978-7-111-42852-7-Part02-161.jpg

2.if与switch标签(www.chuimin.cn)

在模板设计中还可以使用功能更加丰富的if标签,if标签能够实现运算判断标签的所有功能,并且允许设计人员在比较属性里加入PHP代码,也可以在比较属性里使用现有的功能函数。if标签虽然功能丰富,但使用起来相对也比较烦琐,下面将通过代码演示if标签的使用,如下代码所示。

978-7-111-42852-7-Part02-162.jpg

978-7-111-42852-7-Part02-163.jpg

上述代码将根据控制器动作分配的week变量值,从而得出今天星期几。控制器动作运算代码如下所示。

978-7-111-42852-7-Part02-164.jpg

与if标签类似的还有switch标签,使用switch标签实现上述功能,代码将会得到简化,如以下代码所示。

978-7-111-42852-7-Part02-165.jpg

switch标签简化了if标签,在很多情况下均可以代替if标签。这里需要注意的是switch标签中的name属性,该属性指定数据的比较来源,支持PHP所有变量(包括系统变量),但不需要使用“$”变量分配符号;另外,在value条件配对中,switch标签允许同时对多个结果进行配对,多个结果之间使用“|”分隔,如value=”5|6”。

if标签中的condition属性允许直接嵌入PHP代码,例如直接使用函数<if condition="$passwd eq md5($_post['password'])">,虽然if标签功能强大,但由于实现比较烦琐且容易出错,所以建议读者尽量使用其他标签代替。

本节重点介绍了ThinkPHP提供的常用的判断标签,系统还有一些实用的标签,由于篇幅所限,这里就不一一讲述。读者在实际应用开发中借鉴本节内容再配合官方提供的开发手册,相信其他判断标签也能轻松掌握。