Update PicoDb

This commit is contained in:
Frédéric Guillot
2014-02-16 17:37:50 -05:00
parent 6fdf589455
commit 2044d1ab36

View File

@@ -4,6 +4,7 @@ namespace PicoDb;
class Database class Database
{ {
private static $instances = array();
private $logs = array(); private $logs = array();
private $pdo; private $pdo;
@@ -11,7 +12,6 @@ class Database
public function __construct(array $settings) public function __construct(array $settings)
{ {
if (! isset($settings['driver'])) { if (! isset($settings['driver'])) {
throw new \LogicException('You must define a database driver.'); throw new \LogicException('You must define a database driver.');
} }
@@ -30,6 +30,26 @@ class Database
} }
public static function bootstrap($name, \Closure $callback)
{
self::$instances[$name] = $callback;
}
public static function get($name)
{
if (! isset(self::$instances[$name])) {
throw new \LogicException('No database instance created with that name.');
}
if (is_callable(self::$instances[$name])) {
self::$instances[$name] = call_user_func(self::$instances[$name]);
}
return self::$instances[$name];
}
public function setLogMessage($message) public function setLogMessage($message)
{ {
$this->logs[] = $message; $this->logs[] = $message;
@@ -77,19 +97,25 @@ class Database
public function startTransaction() public function startTransaction()
{ {
$this->pdo->beginTransaction(); if (! $this->pdo->inTransaction()) {
$this->pdo->beginTransaction();
}
} }
public function closeTransaction() public function closeTransaction()
{ {
$this->pdo->commit(); if ($this->pdo->inTransaction()) {
$this->pdo->commit();
}
} }
public function cancelTransaction() public function cancelTransaction()
{ {
$this->pdo->rollback(); if ($this->pdo->inTransaction()) {
$this->pdo->rollback();
}
} }