数码资讯
在Zend框架的工厂模式的应用
首先,让我们从一些概念开始: 工厂模式:专门定义一个类来创建其他类的实例,并且创建的实例通常具有相同的父级,工厂模式属于类的创建模式,通常根据独立变量的不同返回不同实例。 工厂模式的本质是动态确定哪种产品应该是基于输入参数的工厂类。工厂模式涉及工厂角色、抽象产品角色和特定的产品角色。 创建者角色:工
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
首先,让我们从一些概念开始:
工厂模式:专门定义一个类来创建其他类的实例,并且创建的实例通常具有相同的父级,工厂模式属于类的创建模式,通常根据独立变量的不同返回不同实例。
工厂模式的本质是动态确定哪种产品应该是基于输入参数的工厂类。工厂模式涉及工厂角色、抽象产品角色和特定的产品角色。
创建者角色:工厂模型的核心,负责实现创建所有实例的内部逻辑,可以直接从外部调用工厂类来创建所需的产品对象。
抽象产品(产品)角色:工厂模式创建的所有对象的父级,负责描述所有实例共享的公共接口。
特定产品(具体产品)角色:工厂模式的创建目标,所有对象都是作为角色的一部分的特定类的实例。
zend_db ZF是工厂模式的一个很好的例子。
然后我们开始分析它。
当配置ZF,我们可以把数据库连接操作信息在bootstrap.php文件
复制代码代码如下所示:
< PHP
类zend_application_bootstrap_bootstrap引导延伸
{
功能__construct($ APP){
家长::__construct($ APP);
$ URL =常数('application_path)。directory_separator。'configs'。directory_separator。'config INI;
dbconfig美元=新zend_config_ini($url,空,真的);
$ db = zend_db::厂($ dbconfig ->一般->数据库->适配器,dbconfig美元->一般->数据库->参数-> toArray());
/ / var_dump($分贝);
为数据库->查询(让名字utf8);
zend_db_table::setdefaultadapter($分贝);
}
}
>
在输入文件,引导()是由一个zend_application对象调用,类的构造函数称为自举。
在构造函数中,我们可以通过zend_db获取操作数据库对象的一个实例::厂()。
一个zend_config_ini实例是用来读取相关信息在config.ini作为参数的函数zend_db:工厂:工厂()
信息在config.ini
{一般}
db.adapter = pdo_mysql
db.params.host = localhost
db.params.username =根
db.params.password =
db.params.dbname =数据库名称
zend_db::厂()
参数1:代表数据库的类型进行操作,如pdo_mysql
参数2:表示连接数据库的信息,包括服务器名称、用户名、密码、要连接的数据库。
首先提出两个问题:
我们应该如何如果我们要操作数据库是MSSQL操作
我们在这里用的是zend_db::厂(),我们应该如何如果我们用传统的方式操作
答案uff1a
(1)我们只需要修改pdo_mysql为pdo_mssql在config.ini文件
(2)以传统方式创建操作数据库的对象实例:
新zend_db_adapter_pdo_mysql分贝=美元(美元配置)
其中:$配置信息读取config.ini
问题即将到来:如果我们使用传统的方法来创建一个对象实例,我们必须有一个过程来决定我们要操作的数据库的类型。
例如:
复制代码代码如下所示:
开关($ DBTYPE){
case'pdo_mysql:
的…
case'pdo_mssql:
的…
case'pdo_sqlite:
的…
}
根据不同的数据库类型编写不同的操作数据库并不麻烦。
但是,所有这些,ZF帮助我们通过了工厂模型,而且使用起来非常方便。
ZF如何实施工厂模型
首先,有一个抽象基类:zend_db_adapter_abstract,它是由工厂模式创建的所有对象的父类。它负责提供实例想要共享的所有接口。
这不仅提供了我们与数据库的实现方法,熟练操作如:选择、更新、插入、删除、查询、fetchrow,fetchassoc;此外,也要在子类的限制,getserverversion,紧密联系的实现提供了一些接口,describetable等等。
复制代码代码如下所示:
抽象类zend_db_adapter_abstract
{
…
}
抽象类zend_db_adapter_pdo_abstract延伸zend_db_adapter_abstract
{
…
}
类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::厂()的最终目的是实现基于不同的参数,不同的数据库。
工厂模式:专门定义一个类来创建其他类的实例,并且创建的实例通常具有相同的父级,工厂模式属于类的创建模式,通常根据独立变量的不同返回不同实例。
工厂模式的本质是动态确定哪种产品应该是基于输入参数的工厂类。工厂模式涉及工厂角色、抽象产品角色和特定的产品角色。
创建者角色:工厂模型的核心,负责实现创建所有实例的内部逻辑,可以直接从外部调用工厂类来创建所需的产品对象。
抽象产品(产品)角色:工厂模式创建的所有对象的父级,负责描述所有实例共享的公共接口。
特定产品(具体产品)角色:工厂模式的创建目标,所有对象都是作为角色的一部分的特定类的实例。
zend_db ZF是工厂模式的一个很好的例子。
然后我们开始分析它。
当配置ZF,我们可以把数据库连接操作信息在bootstrap.php文件
复制代码代码如下所示:
< PHP
类zend_application_bootstrap_bootstrap引导延伸
{
功能__construct($ APP){
家长::__construct($ APP);
$ URL =常数('application_path)。directory_separator。'configs'。directory_separator。'config INI;
dbconfig美元=新zend_config_ini($url,空,真的);
$ db = zend_db::厂($ dbconfig ->一般->数据库->适配器,dbconfig美元->一般->数据库->参数-> toArray());
/ / var_dump($分贝);
为数据库->查询(让名字utf8);
zend_db_table::setdefaultadapter($分贝);
}
}
>
在输入文件,引导()是由一个zend_application对象调用,类的构造函数称为自举。
在构造函数中,我们可以通过zend_db获取操作数据库对象的一个实例::厂()。
一个zend_config_ini实例是用来读取相关信息在config.ini作为参数的函数zend_db:工厂:工厂()
信息在config.ini
{一般}
db.adapter = pdo_mysql
db.params.host = localhost
db.params.username =根
db.params.password =
db.params.dbname =数据库名称
zend_db::厂()
参数1:代表数据库的类型进行操作,如pdo_mysql
参数2:表示连接数据库的信息,包括服务器名称、用户名、密码、要连接的数据库。
首先提出两个问题:
我们应该如何如果我们要操作数据库是MSSQL操作
我们在这里用的是zend_db::厂(),我们应该如何如果我们用传统的方式操作
答案uff1a
(1)我们只需要修改pdo_mysql为pdo_mssql在config.ini文件
(2)以传统方式创建操作数据库的对象实例:
新zend_db_adapter_pdo_mysql分贝=美元(美元配置)
其中:$配置信息读取config.ini
问题即将到来:如果我们使用传统的方法来创建一个对象实例,我们必须有一个过程来决定我们要操作的数据库的类型。
例如:
复制代码代码如下所示:
开关($ DBTYPE){
case'pdo_mysql:
的…
case'pdo_mssql:
的…
case'pdo_sqlite:
的…
}
根据不同的数据库类型编写不同的操作数据库并不麻烦。
但是,所有这些,ZF帮助我们通过了工厂模型,而且使用起来非常方便。
ZF如何实施工厂模型
首先,有一个抽象基类:zend_db_adapter_abstract,它是由工厂模式创建的所有对象的父类。它负责提供实例想要共享的所有接口。
这不仅提供了我们与数据库的实现方法,熟练操作如:选择、更新、插入、删除、查询、fetchrow,fetchassoc;此外,也要在子类的限制,getserverversion,紧密联系的实现提供了一些接口,describetable等等。
复制代码代码如下所示:
抽象类zend_db_adapter_abstract
{
…
}
抽象类zend_db_adapter_pdo_abstract延伸zend_db_adapter_abstract
{
…
}
类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::厂()的最终目的是实现基于不同的参数,不同的数据库。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。