KumbiaPHP  beta2
Framework PHP
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Páginas
db.php
Ir a la documentación de este archivo.
1 <?php
23 require_once dirname(__FILE__) . '/db_base_interface.php';
27 require_once dirname(__FILE__) . '/db_base.php';
28 
35 class Db
36 {
37 
43  protected static $_connections = array();
44 
51  public static function factory($database = null)
52  {
53 
54  //Cargo el mode para mi aplicacion
55  if (!$database) {
56  $database = Config::get('config.application.database');
57  }
58  //Si no es una conexion nueva y existe la conexion singleton
59  if (isset(self::$_connections[$database])) {
60  return self::$_connections[$database];
61  }
62 
63  return self::$_connections[$database] = self::connect($database);
64  }
65 
73  private static function connect($database)
74  {
75  $databases = Config::read('databases');
76  $config = $databases[$database];
77 
78  // carga los valores por defecto para la conexión, si no existen
79  $default = array('port' => 0, 'dsn' => NULL, 'dbname' => NULL, 'host' => 'localhost', 'username' => NULL, 'password' => NULL);
80  $config = $config + $default;
81  $path = dirname(__FILE__);
82 
83  //Si usa PDO
84  if (isset($config['pdo'])) {
85  $dbclass = "DbPdo{$config['type']}";
86  $db_file = "$path/adapters/pdo/{$config['type']}.php";
87  } else {
88  if($config['type'] == 'mysql') $config['type'] = 'mysqli';
89  $dbclass = "Db{$config['type']}";
90  $db_file = "$path/adapters/{$config['type']}.php";
91  }
92 
93  //Carga la clase adaptadora necesaria
94  if (!include_once $db_file) {
95  throw new KumbiaException("No existe la clase $dbclass, necesaria para iniciar el adaptador");
96  }
97 
98  return new $dbclass($config);
99  }
100 
101 }