forked from Hemant-Mann/Musik
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.php
More file actions
72 lines (56 loc) · 2.09 KB
/
Copy pathdatabase.php
File metadata and controls
72 lines (56 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
/**
* Database factory class, which loads a database driver.
* The database drivers are a little different from configuration and caching.
*
* @author Faizan Ayubi
*/
namespace Framework {
use Framework\Base as Base;
use Framework\Events as Events;
use Framework\Registry as Registry;
use Framework\Database as Database;
use Framework\Database\Exception as Exception;
class Database extends Base {
/**
* @readwrite
*/
protected $_type;
/**
* @readwrite
*/
protected $_options;
protected function _getExceptionForImplementation($method) {
return new Exception\Implementation("{$method} method not implemented");
}
public function initialize() {
Events::fire("framework.database.initialize.before", array($this->type, $this->options));
if (!$this->type) {
$configuration = Registry::get("configuration");
if ($configuration) {
$configuration = $configuration->initialize();
$parsed = $configuration->parse("configuration/database");
if (!empty($parsed->database->default) && !empty($parsed->database->default->type)) {
$this->type = $parsed->database->default->type;
unset($parsed->database->default->type);
$this->options = (array) $parsed->database->default;
}
}
}
if (!$this->type) {
throw new Exception\Argument("Invalid type");
}
Events::fire("framework.database.initialize.after", array($this->type, $this->options));
switch ($this->type) {
case "mysql": {
return new Database\Connector\Mysql($this->options);
break;
}
default: {
throw new Exception\Argument("Invalid type");
break;
}
}
}
}
}