前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
MVC是一种设计模式,在软件设计工程中非常实用,最早由smalltalk语言研究中心提出,Java的壮大极大地丰富了MVC设计思想。目前,基于Java的MVC项目有Struts、Spring、Grails等,Java程序员可以利用这些框架,极大地提高开发效率。
PHP经历了面向过程、面向函数到PHP 5.0的面向对象。多种设计模式的演变,使得PHP变得非常易用和强大,但是也让PHP始终没有进入现代化设计语言的阵营。PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。首先看一段代码。
图1-1 PHP大事记
上述代码是传统PHP编程技术中典型的代码编写方式。PHP允许开发人员直接在HTML网页中嵌入逻辑运算代码,这种类似于JavaScript的脚本编写方式,曾经大受网页开发人员欢迎。但是也正因如此,PHP 5.x之前的版本并不能胜任大型Web项目的构建,因为过多地在页面中嵌入运算代码,无疑对项目后期维护产生极大的困扰。同时,由于逻辑与视图混在一起,将造成团队协同的困难。所以早期的PHP通常只适用于小型或个人网站。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。
(www.chuimin.cn)
如上述代码所示,传统意义上,Index是一个PHP类的方法。但是在MVC设计模式中,Index称为动作。对于普通用户而言就是一个网页。但是,这里的网页并不像前面所讲的网页需要混杂着HTML代码,这就是MVC设计模式中最典型的前后台分离编程特点。
当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。尽管每个框架在实现MVC方式上有所不同,但无论怎样变化,都拥有Model(模型)、View(视图)及Controller(控制器)概念。这三者之间的关系如图1-2所示。
图1-2 MVC运行图
如图1-2所示,控制器、视图、模型这3个部分都是相互分离又互相依存的,它们具备较高的耦合性,控制器是MVC中的指挥员,模型器担当了MVC的动力源,模型器可以连接到传统的PHP类库,开发人员也可以使用现有的函数库等进行扩展。
综合而言,MVC编程的灵魂就是灵活。MVC设计不像传统的“类工厂”模式只在有限的类库中进行功能扩展;MVC能够根据用户的请求,由控制器指挥模型器进行相应的算法,得出的结果由视图解释器进行呈现。
有关PHP MVC开发实战的文章
前面已经简单介绍过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
静态缓存规则是静态缓存生成中最关键的配置。静态缓存规则与URL路由规则有些类似,这两者的核心都是基于正则匹配的。其中index即为控制器动作,表示在URL请求到index动作时,系统将生成index.html静态缓存文件。文件缓存规则共由缓存规则、缓存有效期及附加规则构成。同样,在缓存规则中也是允许这样使用的。......
2023-11-04
相关推荐