5.3 共通功能:使用Zend_Db/Zend_Config建立数据库连接的共同界面
数据库的连接,特别是连接步骤,在很多的情况下几乎固定不变。在很多程序中都会用到数据库,当然在使用数据库前必须进行数据库的连接。如果在所有程序中,都追加这个数据库的连接过程,显示是效率不高的。本节将使用Zend_Db/Zend_Config程序库,作成负责数据库连接的共通类。
要点
第3、4章中,使用了以数据库抽象层出现的PHP5标准的PDO(PHP Data Objects)函数,而本章将使用Zend Framework中包含的组件之一Zend_Db来实现数据库连接。
到目前为止,我们可以看到,PDO已经具有了所有操作数据库的必要功能,处理速度也挺快。但是在实际使用过程中,还是有些微小的功能不足的地方,需要比较麻烦的代码组织方式。
为克服上述的不足,后来就出现了Zend_Db组件。Zend_Db基本上(还使用了PDO以外的扩展库)是以PDO为基础开发的数据连接抽象层。追加了几个独特的功能,比PDO更好使用。另外,作为Zend Framework的一部分,与Zend Framework其他组件的结合度非常好。
大家可能会以为又要学习一种新的程序库的使用方法,其实Zend_Db的基本使用方法与PDO没有什么本质的区别,很容易理解。
目录结构
此处为了方便将db.ini放在公开目录下,本来,这样的配置文件应该放在终端用户访问不到的目录下。因为db.ini文件中含有数据库链接字符串,链接用的用户名、密码。如果这些信息泄露的话,其他人就可以自由地操作数据库了。
实际运用时,请务必将db.ini放在用户访问不到的目录中。
代码
DbManager是只有一个静态方法的简单类。需要链接数据库的地方,在需要数据库操作的地方,进行如下调用:
就可以建立数据库的连接。
Zend_Config_Ini是Zend_Config组件中的提供读取.ini文件,这里将读取数据块名为“database”部分的数据。
生成的Zend_Config_Ini对象,将作为Zend_Db::factory方法的参数传入后,需要的参数就这样传给了Zend_Db,Zend_Db将根据传入的参数,进行与数据库连接的准备。
需要注意的是,在factory方法被执行时,并不意味着连接建立起来了。对Zend_Db来说,只有在factory方法执行后,检索执行时,数据库连接才建立起来。
将数据库操作的文字代码设为utf8。
连接时发生意外时,显示例外信息,并中断处理。
操作数据库的适配器类作为factory方法的返回值被返回。
Database数据块里设定了连接数据库所必需的信息。设置的数据从开头依次为适配器、主机名、数据库名、用户名、密码。
补充
适配器(adapter)类
适配器类就是,Zend_Db在处理数据库连接时,提供直接功能的类。在Zend_Db中,当连接数据库发生改变时,只用修改对应的适配器类,而不用修改代码。Zend_Db中,提供了如表5-1所示的适配器类。
表5-1 Zend_Db中提供的适配器类
以“pdo_”开头的适配器类是使用在PDO函数中,其他适配器类与对应的数据库专用函数。使用Zend_Db时,必须将适配器类依赖的模块有效化。
另外,有时一种数据库有多个适配器类(如能用于MySQL的有pdo_mysql与mysqli),没有特殊的理由时,优先使用名字以pdo_开头的适配器类。
共有条评论 网友评论