首页 理论教育PHPMVC开发实战:ZendFramework核心组件

PHPMVC开发实战:ZendFramework核心组件

【摘要】:Zend Framework是以组件的方式进行代码构建的,组件的概念类似是Java中包的概念。Zend Framework强大之处就在于提供了非常多的实用组件,开发人员可以方便地使用Zend Framework提供的种类组件,轻易地实现原本需要复杂设计的功能。常用Zend_Filter组件类如下。Zend_Filter组件所包含的类如图4-5所示。图4-7 Zend_Mail组件5.Zend_Db_AdapterZend_Db_Adapter是一个操作数据库的组件,能够实现简洁高效的数据库操作。

Zend Framework是以组件的方式进行代码构建的,组件的概念类似是Java中包的概念。Zend Framework强大之处就在于提供了非常多的实用组件,开发人员可以方便地使用Zend Framework提供的种类组件,轻易地实现原本需要复杂设计的功能。常用的组件有Zend_Validate、Zend_Filter、Zend_Cache、Zend_Mail、Zend_Db_Adapter等。下面分别介绍。

1.Zend_Validate

Zend_Validate组件用于表单数据的校验。通常在提交表单时为了数据的安全和完整,除了前端开发人员需要对数据的正确性和完整性进行校验外,作为后台处理程序也应该进行数据校验。PHP本身就提供了非常多的校验手段,例如正则匹配、字符处理函数等,但都需要烦琐的处理,而且编程的质量直接影响到数据校验的结果。Zend_Validate能够非常智能地实现数据的校验,开发人员不需要编程复杂的代码,只需要指定需要校验的字段和检验类型,Zend_Validate就能够实现高效及安全的数据验证。Zend_Validate组件包类库如图4-4所示。

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

图4-4 Zend_Validate组件

下面通过Zend_Validate中的Zend_Validate_EmailAddress类实现对Email地址的校验,代码如下所示。

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

2.Zend_Filter

Zend_Filter提供了完善的数据过渡功能,能够将一些存在安全隐患的数据在插入数据库前进行过渡、转义。Zend_Filter提供的Zend_Filter_Interface(变形器)内置了一套完整的规则,能够实现在国际化的环境下处理一些诸如货币单词统计等实用功能。常用Zend_Filter组件类如下。

➢Zend_Filter_Inflector:变形器。

➢Zend_Filter_HtmlEntities:处理HTML。

➢addFilter:连接器。

Zend_Filter组件所包含的类如图4-5所示。

以下代码将演示Zend_Filter_HtmlEntities过滤非安全HTML代码,如下所示。

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

图4-5 Zend_Filter组件

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

3.Zend_Cache

Zend_Cache能够实现多种高效的前端与后台缓存功能,包括文件缓存、数据库缓存、Memcache缓存等。其中Zend_Cache_Core类为缓存组件的核心,它提供了Zend缓存读写控制、缓存生命周期、缓存序列化、缓存方式等。Zend_Cache缓存方式如下。

(1)前端

➢Core:核心缓存,所有前面缓存类都必须继承于Core。

➢File:以普通的文件进行缓存,类似于生成静态文件。

➢Output:捕获并缓存输出,用于实现页面局部缓存。

➢Page:缓存页面,对提高效率帮助很大,因为一旦命中缓存,就直接读取缓存并输出,不再执行后面的代码。支持以session、cookie、get、post作为cache_id干扰码。比如不同的cookie产生不同的缓存页面。

➢Class:缓存静态类和对象。

➢Function:缓存函数。

(2)后端(www.chuimin.cn)

➢APC:即Alternative PHP Cache,它是基于Zend引擎的一个第三方缓存扩展,能够缓存PHP编译后的代码,达到类似于Java、C#中的预编译效果。

➢File:将PHP源文件以静态的方式进行缓存。

➢Memcached:使用Memcached(一个支持分布式架构的内存数据库)缓存数据。

➢Sqlite:著名的嵌入式数据库软件,在Linux、UNIX上广泛地被使用,在小数据的情况下Sqlite的性能是非常高效的。

➢Xcache:功能类似于APC。

Zend_Cache缓存组件位于在Cache目录下,结果如图4-6所示。

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

图4-6 Zend_Cache缓存组件

下面将通过代码演示Zend_Cache操作Memcached,代码如下所示。

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

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

4.Zend_Mail

在PHP中实现发送邮件是一件轻松的事,PHP已经内置了Mail函数,直接使用PHP提供的Mail函数即可实现高效的邮件发送。Zend_Mail是Mail函数的增强版,它以面向对象的方式为开发人员提供强大的邮件处理功能。例如能够轻易地实现邮件附加发送、SMTP验证发送、POP、IMOP邮件功能等。Zend_Mail几乎提供了处理邮件所需要的类,并且能够较好地处理国际化编码问题。Zend_Mail组件文件结构如图4-7所示。

Zend_Mail和PHP内置的Mail函数一样,使用简单、方便。下面将通过代码演示Zend_Mail的使用,代码如下所示。

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

图4-7 Zend_Mail组件

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

5.Zend_Db_Adapter

Zend_Db_Adapter是一个操作数据库的组件,能够实现简洁高效的数据库操作。Zend_Db_Adapter是基于PDO(一个面向服务的数据库操作套件)的,所以在使用Zend_Db_Adapter前需要确保PHP运行环境已经支持PDO模块。

Zend_Db_Adapter实现了PDO全部功能,并且简化了使用步骤,使得Zend_Db_Adapter更加适合MVC编程。Zend_Db_Adapter提供的CURD快捷方法能够实现快速的数据创建、更新、读取、删除等常见操作。文件结构如图4-8所示。

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

图4-8 Zend_Db_Adapter组件

下面将通过代码演示Zend_Db_Adapter连接MySQL数据库服务器,并执行数据查询的功能。

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

如以上代码所示,Zend_Db_Adapter在使用方式上与PDO_MYSQL类似。查询数据使用fetchAll方法;更新数据使用update方法;删除数据使用delete。不同的只是声明方式不一样而已。