手机版

工厂模式在Zend框架中的应用介绍

时间:2021-10-09 来源:互联网 编辑:宝哥软件园 浏览:

首先引用一些概念:工厂模式:专门定义一个类负责创建其他类的实例,创建的实例通常有相同的父类。工厂属于类创建模式,通常根据不同的参数返回不同类的实例。工厂模式的本质是工厂类根据传入的参数动态决定应该创建哪个产品实例。工厂模式涉及工厂角色、抽象产品角色和具体产品角色。Creator的角色:它是工厂模式的核心,负责实现创建所有实例的内部逻辑。外部世界可以直接调用工厂类来创建所需的产品对象。抽象产品角色:它是工厂模式创建的所有对象的父类,负责描述所有实例共享的公共接口。具体产品的角色:它是创建工厂模式的目标,所有对象都是作为这个角色的具体类的实例。ZF的Zend_db就是工厂模式的一个很好的例子。接下来,开始分析。在配置zf时,我们可以将数据库连接操作信息放在Bootstrap.php文件中,并复制代码如下:php类Bootstrap扩展了Zend _ Application _ Bootstrap _ Bootstrap { function _ _ construct($ app){ parent : _ _ construct($ app);$ url=常量(' APPLICATION_PATH ')。DIRECTORY_SEPARATOR。配置。DIRECTORY_SEPARATOR。' config . ini ';$ dbconfig=new Zend _ Config _ Ini($ URL,null,true);$ db=Zend _ db : FactOr($ dbconfig-general-db-adapter,$ dbconfig-general-db-params-to array());//var _ dump($ db);$ db-query(' SET NAMES UTF8 ');Zend _ Db _ table :3360 setdefaultadapter($ Db);} } ?在入口文件,通过Zend_Application对象调用bootstrap(),类Bootstrap的构造函数将被调用。在构造函数中,我们可以通过Zend_Db:factory()获得一个操作数据库的对象实例。config.ini中的相关信息作为参数通过Zend_Config_Ini的实例读取,并传递给工厂函数Zend _ db :3360 factory(). Config . Ini信息[general]。db . adapter=PDO _ mysqldb . params . host=localhostdb . params . username=rootdb . params . password=db . params . dbname=数据库名Zend_Db:factory()。参数1:表示要操作的数据库类型,如PDO _ MYSQL;参数2:表示连接数据库的信息,包括服务器名、用户名和密码。首先对要连接的数据库抛出两个问题:如果要操作的数据库是MSSQL,如何操作?这里我们使用Zend_Db:factory()。如果用传统的方式,如何解决这个问题:我们只需要在config.ini文件中将PDO_MYSQL修改成PDO _ MSSQL;创建一个对象实例,用于以传统方式操作数据库:$ db=new Zend _ db _ adapter _ PDO _ MySQL($config),其中:$ config信息从config.ini读取问题是,如果我们使用传统方式创建对象实例,我们必须有一个。例如,复制代码如下: switch($ dbtype){ case ' PDO _ MySQL ' 3360.案例' PDO _ MSSQL' 3360.案例' PDO _ SQLite' 3360.}我们要根据不同的数据库类型编写不同的语句来操作数据库。这不是很麻烦吗?但是zf已经通过工厂模式为我们做好了一切,使用起来非常方便。如何在Zf中实现工厂模式?首先必须有一个抽象基类:Zend _ Db _ Adapter _抽象,它是工厂模式创建的所有对象的父类,负责提供所有实例应该共享的接口。

该类不仅提供了一些我们非常熟悉操作数据库的实现方法,比如:选择、更新、插入、删除、查询、场效应晶体管、场效应晶体管另外,也提供了一些接口,用以在子类中进行实现,比如:限制,获取服务器版本,关闭连接,可描述等等复制代码代码如下:抽象类Zend_Db_Adapter_Abstract { //.}抽象类Zend _ Db _ Adapter _ Pdo _抽象扩展了Zend_Db_Adapter_Abstract { //.} class Zend _ Db _ Adapter _ Pdo _ MySQL扩展了Zend _ Db _ Adapter _ Pdo _ Abstract {//.实现针对关系型数据库数据库的操作}类Zend _ Db _ Adapter _ Pdo _ Mssql扩展了Zend _ Db _ Adapter _ Pdo _ Abstract {//.实现针对Mssql数据库的操作}类Zend_Db_Adapter_Pdo_Sqlite扩展了Zend _ Db _ Adapter _ Pdo _ Abstract {//.实现针对Sqlite数据库的操作} 以上关系可以用一张图简单的表示出来

接下来,我们跟踪Zend_Db:Factory()是否可以根据不同的参数选择不同的数据库。

版权声明:工厂模式在Zend框架中的应用介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。