tweaking and refactoring the database connectors. added connectors to the container.

This commit is contained in:
Taylor Otwell 2011-10-15 23:20:13 -05:00
parent 07f3f5d03c
commit 893acd8743
2 changed files with 31 additions and 18 deletions

View File

@ -39,6 +39,33 @@
return new Routing\Caller($c, require APP_PATH.'filters'.EXT, CONTROLLER_PATH); return new Routing\Caller($c, require APP_PATH.'filters'.EXT, CONTROLLER_PATH);
}), }),
/*
|--------------------------------------------------------------------------
| Laravel Database Connectors
|--------------------------------------------------------------------------
|
| The following components are used to establish PDO database connections
| to the various database systems supported by Laravel. By resolving these
| connectors out of the IoC container, new database systems may be added
| by simply registering a connector.
|
*/
'laravel.database.connectors.sqlite' => function($c)
{
return new Database\Connectors\SQLite;
},
'laravel.database.connectors.mysql' => function($c)
{
return new Database\Connectors\MySQL;
},
'laravel.database.connectors.pgsql' => function($c)
{
return new Database\Connectors\Postgres;
},
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Laravel Caching Components | Laravel Caching Components

View File

@ -1,5 +1,6 @@
<?php namespace Laravel\Database; <?php namespace Laravel\Database;
use Laravel\IoC;
use Laravel\Config; use Laravel\Config;
class Manager { class Manager {
@ -56,27 +57,12 @@ public static function connection($connection = null)
*/ */
protected static function connect($config) protected static function connect($config)
{ {
if (isset($config['connector'])) { return call_user_func($config['connector'], $config); } if (isset($config['connector']))
switch ($config['driver'])
{ {
case 'sqlite': return call_user_func($config['connector'], $config);
$connector = new Connectors\SQLite;
break;
case 'mysql':
$connector = new Connectors\MySQL;
break;
case 'pgsql':
$connector = new Connectors\Postgres;
break;
default:
throw new \Exception("Database driver [{$config['driver']}] is not supported.");
} }
return $connector->connect($config); return IoC::container()->core("database.connectors.{$config['driver']}")->connect($config);
} }
/** /**