国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah php教程 PHP開發(fā) 工廠模式在Zend Framework中應用介紹

工廠模式在Zend Framework中應用介紹

Jan 05, 2017 am 10:00 AM

首先我們先引用些概念:?
工廠模式:專門定義一個類來負責創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有其同的父類。工廠模式屬于類的創(chuàng)建模式,通常根據(jù)自變量的不同返回不同類的實例。?
工廠模式的實質是由一個工廠類根據(jù)傳入的參量,動態(tài)決定應該創(chuàng)建出哪一個產品的實例。工廠模式式涉及到工廠角色、抽象產品角色和具體產品角色。?
工廠(Creator)角色:是工廠模式的核心,它負責實現(xiàn)創(chuàng)建所有實例的內部邏。工廠類可以被外界直接調用,創(chuàng)建所需產品對象。?
抽象產品(Product)角色:是工廠模式所創(chuàng)建所有對象的父類,它負責描述所有實例所共有的公共接口。?
具體產品(Concrete Product)角色:是工廠模式的創(chuàng)建目標,所有的對象都是充當這個角色的某個具體類的實例。?
ZF中的zend_db就是工廠模式的一個很好的例子。?
接下來就開始進行分析。。。。。。?
配置zf的時候,我們可以將數(shù)據(jù)庫的連接操作信息放在Bootstrap.php文件中?

<?php 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
function __construct($app){ 
parent::__construct($app); 
$url=constant(&#39;APPLICATION_PATH&#39;).DIRECTORY_SEPARATOR.&#39;configs&#39;.DIRECTORY_SEPARATOR.&#39;config.ini&#39;; 
$dbconfig=new Zend_Config_Ini($url,null,true); 
$db=Zend_Db::factory($dbconfig->general->db->adapter,$dbconfig->general->db->params->toArray()); 
// var_dump($db); 
$db->query(&#39;SET NAMES UTF8&#39;); 
Zend_Db_Table::setDefaultAdapter($db); 
} 
} 
?>

在入口文件處,通過一個Zend_Application對象來調用bootstrap(),類Bootstrap的構造函數(shù)就會被調用。
在構造函數(shù)中,通過Zend_Db::factory()我們就能得到一個操作數(shù)據(jù)庫的對象實例。
通過一個Zend_Config_Ini 實例讀取config.ini中相關信息作為參數(shù)傳遞給工廠函數(shù)Zend_Db::factory()
config.ini 的信息
[general]
db.adapter =PDO_MYSQL
db.params.host =localhost
db.params.username =root
db.params.password =
db.params.dbname = 數(shù)據(jù)庫名
Zend_Db::factory()
其中參數(shù)一:表示要操作的數(shù)據(jù)庫類型,比如PDO_MYSQL
參數(shù)二:表示連接數(shù)據(jù)庫的信息,包括服務器名,用戶名,密碼,要連接的數(shù)據(jù)庫

先拋出兩個提個問題:
①如果我們要操作的數(shù)據(jù)庫是MSSQL,該怎么操作
②這里我們使用的是Zend_Db::factory(),如果我們使用傳統(tǒng)的方式,該怎么操作

解答:
① 我們只需要在config.ini文件中將PDO_MYSQL修改成PDO_MSSQL即可
② 傳統(tǒng)方式創(chuàng)建一個操作數(shù)據(jù)庫的對象實例:
$db=new Zend_Db_Adapter_Pdo_Mysql($config)
其中:$config信息從config.ini中讀取
問題來了:我們使用傳統(tǒng)的方式來創(chuàng)建一個對象實例的話,我們必然有一個流程來判斷當前要操作的數(shù)據(jù)庫類型吧?
比如:

switch ($dbType){ 
case &#39;PDO_MYSQL&#39;: 
.... 
case &#39;PDO_MSSQL&#39;: 
.... 
case &#39;PDO_SQLITE&#39;: 
.... 
}

我們還得根據(jù)不同的數(shù)據(jù)庫類型,寫不同的操作數(shù)據(jù)庫的語句,這樣豈不是很麻煩
但是,這一切的一切,zf通過工廠模式都已經(jīng)幫我們做好了,使用起來非常方便

Zf中如何是如何實現(xiàn)工廠模式的呢?
首先,得有一個抽象基類:Zend_Db_Adapter_Abstract,該類是工廠模式所創(chuàng)建的所有對象的父類,他負責提供所有實例要所共有的接口。
該類不僅提供了一些我們非常熟悉操作數(shù)據(jù)庫的實現(xiàn)方法,比如:select,update,insert,delete,query,fetchRow,fetchAssoc;另外,也提供了一些接口,用以在子類中進行實現(xiàn),比如:limit,getServerVersion,closeConnection,describeTable等等

abstract class Zend_Db_Adapter_Abstract 
{ 
//.. 
} 
abstract class Zend_Db_Adapter_Pdo_Abstract extends Zend_Db_Adapter_Abstract 
{ 
//.. 
} 
class Zend_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Abstract 
{ 
//...實現(xiàn)針對Mysql數(shù)據(jù)庫的操作 
} 
class Zend_Db_Adapter_Pdo_Mssql extends Zend_Db_Adapter_Pdo_Abstract 
{ 
//....實現(xiàn)針對Mssql數(shù)據(jù)庫的操作 
} 
class Zend_Db_Adapter_Pdo_Sqlite extends Zend_Db_Adapter_Pdo_Abstract 
{ 
//....實現(xiàn)針對Sqlite數(shù)據(jù)庫的操作 
}

以上關系可以用一張圖簡單的表示出來?

工廠模式在Zend Framework中應用介紹

接下來,我們跟蹤下Zend_Db::Factory()到底是實現(xiàn)根據(jù)不同的參數(shù)選擇不同的數(shù)據(jù)庫的。?

更多工廠模式在Zend Framework中應用介紹相關文章請關注PHP中文網(wǎng)!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276