程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> zend framework2 實現多數據庫配置使用的另一種方法

zend framework2 實現多數據庫配置使用的另一種方法

編輯:C++入門知識

zend framework2 實現多數據庫配置使用的另一種方法


相比之前我發過的第一種在zend framework2中實現多數據庫配置使用的方法:http://blog.csdn.net/a437629292/article/details/41121455;我更喜歡一下這種方法!

別急,聽我慢慢道來。

1. 問題:第一種方法(參見上述連接),是沒實例化一個model,都去實例化一個數據庫適配器,這樣是不是有點浪費資源呢?

所以,本人一直不滿意這種實現方式,一直在尋找如何能一個請求(無論包含多少個model的調用),甚至從項目啟動後,就只實例化一次數據庫適配器。

2. 想法:pubilc/index.php 是唯一入口文件,那就是說所有請求都需要經過index.php,那麼就有一點靈感了,是不是我在index.php裡實例化一個數據庫適配器數組,

然後根據配置或者是參數,去選擇實例化哪個數據庫適配器?

3. 實踐:既然有了這個想法,趕緊實踐一把:

在index.php裡加入如下代碼:

//實例化所有的數據庫適配器
$configs=new Zend_Config_Ini(APPLICATION_PATH.'/configs/serverConfig.ini');
$dbAdapters = array();
//$configArray = array();
$registry=Zend_Registry::getInstance();
foreach ($configs as $config){
	$databaseName = $config->db->params->dbname;
	$registry=Zend_Registry::getInstance();
	$configArray[$databaseName] = $config;
	$registry->set('configArray',$configArray);
	//配置數據庫
	$db=Zend_Db::factory($config->db); //實例化一個合適的數據庫適配器
	$db->query("set names utf8");
	$dbAdapters[$databaseName] = $db;
	$dbAdapters[$databaseName] = Zend_Db::factory($config->db->adapter,$config->db->params->toArray());
	if(($config->db->params->default) == 1){
		Zend_Db_Table::setDefaultAdapter($db);
	}
}
$registry->set('dbAdapters', $dbAdapters);
這樣,就會把serverConfig.ini裡的所有配置數據庫節點都實例化成數據庫適配器,並裝入數組中,在數組中了,我們就可以使用了。

我現在實現的是,設置默認的數據庫適配器,serverConfig.ini裡的代碼如下:

[proManager]
db.adapter = PDO_MYSQL
db.params.host = 127.0.0.1:3306
db.params.username = root
db.params.password = root
db.params.dbname = proManager
db.params.default = 0

[proManager1]
db.adapter = PDO_MYSQL
db.params.host = 127.0.0.1:3306
db.params.username = root
db.params.password = root
db.params.dbname = proManager1
db.params.default = 1

就這樣,通過設置default 參數就可以輕松實現數據庫卻換使用了!OY...

國際慣例:歡迎拍磚!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved