图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
PHP内置了非常强大、易用的文件上传模块,使得过去需要额外扩展才能实现的文件上传,在PHP中只需要使用一个简单的move_uploaded_file函数即可实现。ThinkPHP内置了文件上传扩展类UpdateFile,该类库对move_uploaded_file函数进行了高度封装,实现了上传文件类型检测、上传文件大小检测、上传文件压缩等重要功能。下面将深入介绍。
1.UpdateFile类库
虽然PHP提供了move_uploaded_file函数,能够方便地实现文件上传功能。但一个完善的文件上传步骤至少需要包括文件大小检测、类型检测等,然后才能执行move_uploaded_file上传,如以下代码所示。
在MVC开发中,这些操作均被封装为功能类。文件类型、大小等使用类成员属性定义,UpdateFile类库是ThinkPHP内置的文件上传扩展类,使用时需要额外引入。如以下代码所示。
UpdateFile类是实例类,使用时需要实例化。一个最简单的上传功能只需要调用upload方法即可,如以下代码所示。
如上述代码所示,UpdateFile扩展类中提供了maxSize、allowExts等实用属性,这些属性可以对文件大小、类型进行检测,防止用户随意上传文件,给系统造成安全隐患。UpdateFile提供了众多文件上传处理属性,如表11-2所示。
表11-2 UpdateFile扩展类成员属性
2.Image类库
UpdateFile文件上传类对图像文件处理是基于Image类库实现的,同时Image类也是一个对外公开的扩展类(位于ORG/Util目录)。开发人员可以直接调用Image图像处理类直接对上传图片进行进一步处理。Image类包括了静态成员方法及实例成员方法,静态方法使用时不需要实例化。下面将对常用的成员方法进行介绍。
(1)getImageInfo(www.chuimin.cn)
getImageInfo方法用于获取图像文件综合信息(基于PHP内置的getimagesize函数实现),方法形式如下。
参数img表示完整的图片文件路径。一旦获取成功getImageInfo方法将会返回图像宽度、高度、大小等。如以下代码所示。
(2)water
water方法能够生成图片水印,方法形式如下。
参数source表示需要加入水印的原图片;参数water表示水印图片,只支持jpg、png图片格式;参数savename表示水印合成后的图片文件;参数alpha表示水印透明度。
(3)buildString
buildString方法可以将字符串转换为图片,方法形式如下。
参数string表示需要转换的字符串,不支持中文;参数rgb表示图像字体的颜色值,例如array("0","0","0")表示黑色字体;参数filename表示输出文件名;参数type表示图像类型,常用的有jpg、bmp、png;参数disturb表示图像干扰点,共支持4个值:0(无干扰点)、1(点干扰)、2(线干扰)、3(复合干扰);参数border表示是否添加图像边框。
有关PHP MVC开发实战的文章
图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
与PHP的include不同,在模板中使用include对引擎的解释过程不受任何影响,就算被包含的文件不存在也不会被中断执行。另外URL模式尽量不要使用自定义的URL REWRITE模式,否则目录层级有可能发生改变,导致include找不到文件。......
2023-11-04
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
和其他PHP MV框架一样,要使用ThinkPHP必须首先要安装和部署框架文件。ThinkPHP支持多种数据库驱动,包括PDO套件,接下来将通过ThinkPHP实现一个简单的MVC应用。这里将下载的版本为ThinkPHP 3.0,解压后ThinkPHP目录结构如图4-22所示。图4-23 ThinkPHP成功初始化项目......
2023-11-04
相关推荐