123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- /**
- * db_factory.class.php 数据库工厂类
- *
- * @copyright (C) 2005-2015 PHPCMS
- * @license http://www.phpcms.cn/license/
- * @lastmodify 2015-02-10
- */
- final class db_factory {
-
- /**
- * 当前数据库工厂类静态实例
- */
- private static $db_factory;
-
- /**
- * 数据库配置列表
- */
- protected $db_config = array();
-
- /**
- * 数据库操作实例化列表
- */
- protected $db_list = array();
-
- /**
- * 构造函数
- */
- public function __construct() {
- }
-
- /**
- * 返回当前终级类对象的实例
- * @param $db_config 数据库配置
- * @return object
- */
- public static function get_instance($db_config = '') {
- if($db_config == '') {
- $db_config = pc_base::load_config('database');
- }
- if(db_factory::$db_factory == '') {
- db_factory::$db_factory = new db_factory();
- }
- if($db_config != '' && $db_config != db_factory::$db_factory->db_config) db_factory::$db_factory->db_config = array_merge($db_config, db_factory::$db_factory->db_config);
- return db_factory::$db_factory;
- }
-
- /**
- * 获取数据库操作实例
- * @param $db_name 数据库配置名称
- */
- public function get_database($db_name) {
- if(!isset($this->db_list[$db_name]) || !is_object($this->db_list[$db_name])) {
- $this->db_list[$db_name] = $this->connect($db_name);
- }
- return $this->db_list[$db_name];
- }
-
- /**
- * 加载数据库驱动
- * @param $db_name 数据库配置名称
- * @return object
- */
- public function connect($db_name) {
- $object = null;
- switch($this->db_config[$db_name]['type']) {
- case 'mysql' :
- pc_base::load_sys_class('mysql', '', 0);
- $object = new mysql();
- break;
- case 'mysqli' :
- $object = pc_base::load_sys_class('db_mysqli');
- break;
- case 'access' :
- $object = pc_base::load_sys_class('db_access');
- break;
- default :
- pc_base::load_sys_class('mysql', '', 0);
- $object = new mysql();
- }
- $object->open($this->db_config[$db_name]);
- return $object;
- }
- /**
- * 关闭数据库连接
- * @return void
- */
- protected function close() {
- foreach($this->db_list as $db) {
- $db->close();
- }
- }
-
- /**
- * 析构函数
- */
- public function __destruct() {
- $this->close();
- }
- }
- ?>
|