Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
12 / 12 |
CRAP | |
100.00% |
31 / 31 |
Database | |
100.00% |
1 / 1 |
|
100.00% |
12 / 12 |
17 | |
100.00% |
31 / 31 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
get | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
|||
connectionDriverName | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
driver | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
buildDriver | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
query | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
values | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
sqlExpression | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
sql | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
configDriverName | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
buildValues | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
buildSql | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
<?php | |
namespace PHPixie; | |
class Database | |
{ | |
protected $config; | |
protected $values; | |
protected $sql; | |
protected $document; | |
protected $driverClasses = array( | |
'pdo' => '\PHPixie\Database\Driver\PDO', | |
'mongo' => '\PHPixie\Database\Driver\Mongo', | |
); | |
protected $drivers = array(); | |
protected $connections = array(); | |
public function __construct($config) | |
{ | |
$this->config = $config; | |
} | |
public function get($connectionName = 'default') | |
{ | |
if (!isset($this->connections[$connectionName])) { | |
$config = $this->config->slice($connectionName); | |
$driverName = $this->configDriverName($config); | |
$driver = $this->driver($driverName); | |
$this->connections[$connectionName] = $driver->buildConnection($connectionName, $config); | |
} | |
return $this->connections[$connectionName]; | |
} | |
public function connectionDriverName($connectionName) | |
{ | |
$config = $this->config->slice($connectionName); | |
return $this->configDriverName($config); | |
} | |
public function driver($name) | |
{ | |
if (!isset($this->drivers[$name])) { | |
$this->drivers[$name] = $this->buildDriver($name); | |
} | |
return $this->drivers[$name]; | |
} | |
public function buildDriver($name) | |
{ | |
$class = $this->driverClasses[$name]; | |
return new $class($this); | |
} | |
public function query($type = 'select', $connectionName = 'default') | |
{ | |
return $this->get($connectionName)->query($type); | |
} | |
public function values() | |
{ | |
if ($this->values === null) | |
$this->values = $this->buildValues(); | |
return $this->values; | |
} | |
public function sqlExpression($sql = '', $params = array()) | |
{ | |
return $this->sql()->expression($sql, $params); | |
} | |
public function sql() | |
{ | |
if ($this->sql === null) | |
$this->sql = $this->buildSql(); | |
return $this->sql; | |
} | |
protected function configDriverName($config) | |
{ | |
$driverName = $config->get('driver'); | |
if(!array_key_exists($driverName, $this->driverClasses)) { | |
throw new \PHPixie\Database\Exception\Driver("Driver '$driverName' does not exist"); | |
} | |
return $driverName; | |
} | |
protected function buildValues() | |
{ | |
return new \PHPixie\Database\Values(); | |
} | |
protected function buildSql() | |
{ | |
return new \PHPixie\Database\Type\SQL(); | |
} | |
} |