database refactoring for dependency injection and other general refactoring.
This commit is contained in:
parent
c2f5e7eeb5
commit
3e874867b8
|
@ -45,7 +45,7 @@
|
||||||
{
|
{
|
||||||
$config = $container->resolve('laravel.config');
|
$config = $container->resolve('laravel.config');
|
||||||
|
|
||||||
return new Database\Manager($config->get('database.connections'), $config->get('database.default'));
|
return new Database\Manager(new Database\Connector\Factory, $config->get('database.connections'), $config->get('database.default'));
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,15 +40,19 @@ class Connection {
|
||||||
/**
|
/**
|
||||||
* Create a new Connection instance.
|
* Create a new Connection instance.
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param Connector $connector
|
||||||
* @param array $config
|
* @param Query\Factory $factory
|
||||||
* @param Connector $connector
|
* @param Compiler\Factory $compiler
|
||||||
|
* @param string $name
|
||||||
|
* @param array $config
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($name, $config, Connector $connector)
|
public function __construct(Connector $connector, Query\Factory $query, Query\Compiler\Factory $compiler, $name, $config)
|
||||||
{
|
{
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
|
$this->query = $query;
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
|
$this->compiler = $compiler;
|
||||||
$this->connector = $connector;
|
$this->connector = $connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +156,7 @@ private function execute(\PDOStatement $statement, $bindings)
|
||||||
*/
|
*/
|
||||||
public function table($table)
|
public function table($table)
|
||||||
{
|
{
|
||||||
return Query\Factory::make($table, $this, Query\Compiler\Factory::make($this));
|
return $this->query->make($this, $this->compiler->make($this), $table);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -167,4 +171,12 @@ public function driver()
|
||||||
return $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
|
return $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic Method for dynamically beginning queries on database tables.
|
||||||
|
*/
|
||||||
|
public function __call($method, $parameters)
|
||||||
|
{
|
||||||
|
return $this->table($method);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -22,7 +22,7 @@ class Manager {
|
||||||
*
|
*
|
||||||
* @var Connector\Factory
|
* @var Connector\Factory
|
||||||
*/
|
*/
|
||||||
protected $factory;
|
protected $connector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The database connection configurations.
|
* The database connection configurations.
|
||||||
|
@ -41,16 +41,16 @@ class Manager {
|
||||||
/**
|
/**
|
||||||
* Create a new database manager instance.
|
* Create a new database manager instance.
|
||||||
*
|
*
|
||||||
* @param Connector\Factory $factory
|
* @param Connector\Factory $connector
|
||||||
* @param array $config
|
* @param array $config
|
||||||
* @param string $default
|
* @param string $default
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct(Connector\Factory $factory, $config, $default)
|
public function __construct(Connector\Factory $connector, $config, $default)
|
||||||
{
|
{
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->factory = $factory;
|
|
||||||
$this->default = $default;
|
$this->default = $default;
|
||||||
|
$this->connector = $connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -73,9 +73,9 @@ public function connection($connection = null)
|
||||||
throw new \Exception("Database connection [$connection] is not defined.");
|
throw new \Exception("Database connection [$connection] is not defined.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$connector = $this->factory->make($this->config[$connection]);
|
list($connector, $query, $compiler) = array($this->connector->make($this->config[$connection]), new Query\Factory, new Query\Compiler\Factory);
|
||||||
|
|
||||||
static::$connections[$connection] = new Connection($connection, $this->config[$connection], $connector);
|
$this->connections[$connection] = new Connection($connector, $query, $compiler, $connection, $this->config[$connection]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->connections[$connection];
|
return $this->connections[$connection];
|
||||||
|
|
|
@ -90,12 +90,12 @@ class Query {
|
||||||
/**
|
/**
|
||||||
* Create a new query instance.
|
* Create a new query instance.
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param Connection $connection
|
* @param Connection $connection
|
||||||
* @param Compiler $compiler
|
* @param Compiler $compiler
|
||||||
|
* @param string $table
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($table, Connection $connection, Query\Compiler $compiler)
|
public function __construct(Connection $connection, Query\Compiler $compiler, $table)
|
||||||
{
|
{
|
||||||
$this->table = $table;
|
$this->table = $table;
|
||||||
$this->compiler = $compiler;
|
$this->compiler = $compiler;
|
||||||
|
|
|
@ -8,20 +8,20 @@ class Factory {
|
||||||
/**
|
/**
|
||||||
* Create a new query instance based on the connection driver.
|
* Create a new query instance based on the connection driver.
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param Connection $connection
|
* @param Connection $connection
|
||||||
* @param Compiler $compiler
|
* @param Compiler $compiler
|
||||||
|
* @param string $table
|
||||||
* @return Query
|
* @return Query
|
||||||
*/
|
*/
|
||||||
public static function make($table, Connection $connection, Compiler $compiler)
|
public function make(Connection $connection, Compiler $compiler, $table)
|
||||||
{
|
{
|
||||||
switch ($connection->driver())
|
switch ($connection->driver())
|
||||||
{
|
{
|
||||||
case 'pgsql':
|
case 'pgsql':
|
||||||
return new Postgres($table, $connection, $compiler);
|
return new Postgres($connection, $compiler, $table);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return new Query($table, $connection, $compiler);
|
return new Query($connection, $compiler, $table);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue