PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
虽然多数的运算逻辑都在控制器和模型中完成,但在模板引擎渲染过程合理地进行一些逻辑判断不仅能提高代码的可读性,还能够提高程序的运行效率。主流的框架大多数都支持在视图模板中进行逻辑判断、比较等基本操作,ThinkPHP默认的视图引擎提供了非常丰富的逻辑运算判断、比较等标签。这些标签灵活易用,熟悉运算标签的使用将极大地提供开发效率,同时也让后台代码更加规范和整洁,下面分别介绍。
1.运算判断标签
在传统的PHP开发中,开发人员可以使用if等标签比较两个数值的大小,以便程序进行下一步的运算。在ThinkPHP视图引擎中,开发人员可以使用内置的标签实现运算判断,如表6-3所示。
表6-3 判断比较标签
了解Smarty模板引擎的读者相信对这些标签并不陌生,这些标签都是由相应的单词缩写而成,如neq就是not equal的缩写。相比Smarty,在ThinkPHP视图模板中使用这些运算比较标签更加方便和灵活,如以下代码所示。
如上述代码所示,在volist循环体中使用egt判断标签,表示只要输出user_id大于或等于2的记录。其中name属性表示比较源,value表示比较的目标,这两个属性都支持使用变量(包括系统变量)。需要注意的是,属性name在设置变量时不需要指定“$”符号,而value属性必须指定“$”符号。判断标签最终将由模板引擎转换成PHP判断语句,如以下代码所示。
其他的判断标签使用方式一样,在此不做细述。判断标签还可以结合<else/>标签使用,这样就可以实现类似于if…else的效果了,如以下代码所示。
2.if与switch标签(www.chuimin.cn)
在模板设计中还可以使用功能更加丰富的if标签,if标签能够实现运算判断标签的所有功能,并且允许设计人员在比较属性里加入PHP代码,也可以在比较属性里使用现有的功能函数。if标签虽然功能丰富,但使用起来相对也比较烦琐,下面将通过代码演示if标签的使用,如下代码所示。
上述代码将根据控制器动作分配的week变量值,从而得出今天星期几。控制器动作运算代码如下所示。
与if标签类似的还有switch标签,使用switch标签实现上述功能,代码将会得到简化,如以下代码所示。
switch标签简化了if标签,在很多情况下均可以代替if标签。这里需要注意的是switch标签中的name属性,该属性指定数据的比较来源,支持PHP所有变量(包括系统变量),但不需要使用“$”变量分配符号;另外,在value条件配对中,switch标签允许同时对多个结果进行配对,多个结果之间使用“|”分隔,如value=”5|6”。
if标签中的condition属性允许直接嵌入PHP代码,例如直接使用函数<if condition="$passwd eq md5($_post['password'])">,虽然if标签功能强大,但由于实现比较烦琐且容易出错,所以建议读者尽量使用其他标签代替。
本节重点介绍了ThinkPHP提供的常用的判断标签,系统还有一些实用的标签,由于篇幅所限,这里就不一一讲述。读者在实际应用开发中借鉴本节内容再配合官方提供的开发手册,相信其他判断标签也能轻松掌握。
有关PHP MVC开发实战的文章
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
下面通过示例代码,演示Cookie函数的实际应用。Cookie能够存放包括中文在内的字符,但长度需要控制在225个字符之内。通过前面的学习,相信读者已经能够掌握Session及Cookie的操作了。虽然Cookie存放于客户端,但是并不意味着Cookie不适合用于会员验证等场景。所以很多网站会使用加密的方式存放Cookie用户名及密码,甚至结合软件与硬件签名实现高度安全的Cookie。总而言之,使用Cookie存放登录数据是可行的,但要做好加密与解密相关操作。......
2023-11-04
比如MySQL服务器集群,只是由于习惯性的问题,多数程序员都称为分布式数据库。分布式数据库的特点是多台数据库服务器轮流对外提供服务,并提供冗余、容灾等基本功能,确保操作不中断。下面以默认的MySQL驱动为例,详细介绍ThinkPHP连接分布式数据库的过程。......
2023-11-04
Input类库是ThinkPHP提供的一个字符串输入处理扩展,能够方便地对字符串进行安全过滤、转义等,下面将对Input扩展类公开可调用的方法进行介绍。URL协议支持https、ftp等,运行结果为“http://beauty-soft.net”。其中参数string表示需要进行省略处理的字符串;参数length表示省略的字符数。safeHtml通常用于过滤表单输入,防止用户输入HTML代码破坏数据安全性。......
2023-11-04
相关推荐