KumbiaPHP beta2-dev
Framework PHP en español
|
00001 <?php 00026 require_once CORE_PATH . 'libs/db/db_base_interface.php'; 00030 require_once CORE_PATH . 'libs/db/db_base.php'; 00031 00036 class Db 00037 { 00043 protected static $_connections = array(); 00044 00052 public static function factory ($database = null, $new = false) 00053 { 00054 00055 //Cargo el mode para mi aplicacion 00056 if (! $database) { 00057 $database = Config::get('config.application.database'); 00058 } 00059 //Si no es una conexion nueva y existe la conexion singleton 00060 if (isset(self::$_connections[$database])) { 00061 return self::$_connections[$database]; 00062 } 00063 00064 return self::$_connections[$database] = self::connect($database); 00065 } 00066 00074 private static function connect($database) 00075 { 00076 $databases = Config::read('databases'); 00077 $config = $databases[$database]; 00078 00079 // carga los valores por defecto para la conexión, si no existen 00080 $default = array ('port' => 0, 'dsn' => NULL, 'dbname' => NULL, 'host' => 'localhost', 'username' => NULL, 'password' => NULL); 00081 $config = $config + $default; 00082 00083 //Si usa PDO 00084 if (isset($config['pdo'])) { 00085 $dbclass = "DbPdo{$config['type']}"; 00086 $db_file = "libs/db/adapters/pdo/{$config['type']}.php"; 00087 } else { 00088 $dbclass = "Db{$config['type']}"; 00089 $db_file = "libs/db/adapters/{$config['type']}.php"; 00090 } 00091 00092 //Carga la clase adaptadora necesaria 00093 if (! include_once CORE_PATH . $db_file){ 00094 throw new KumbiaException("No existe la clase $dbclass, necesaria para iniciar el adaptador"); 00095 } 00096 00097 return new $dbclass($config); 00098 } 00099 }