create instance if not exists
public static instance ( Illuminate\Database\DatabaseManager $databaseManager, |
||
$databaseManager | Illuminate\Database\DatabaseManager | database manager |
$transaction | transaction handler | |
$proxy | proxy manager | |
$cache | Xpressengine\Support\CacheInterface | cache |
리턴 |
/** * Register the service provider. * * @return void */ public function register() { DynamicModel::clearBootedModels(); $this->app->singleton('xe.db.proxy', function ($app) { return ProxyManager::instance($app['xe.register']); }); $this->app->singleton(['xe.db' => DatabaseHandler::class], function ($app) { $coupler = DatabaseCoupler::instance($app['db'], TransactionHandler::instance(), $app['xe.db.proxy'], new LaravelCache($app['cache']->driver('schema'))); $proxyClass = $app['xe.interception']->proxy(DatabaseHandler::class, 'XeDB'); return new $proxyClass($coupler, $app['config']->get('xe.database')); }); }
/** * test manager connector * * @return void */ public function testManageConnector() { $defaultConnection = m::mock('Illuminate\\Database\\Connection'); $defaultConnection->shouldReceive('getName')->andReturn('default'); $defaultConnection->shouldReceive('transactionLevel')->andReturn(0); $someConnection = m::mock('Illuminate\\Database\\Connection'); $someConnection->shouldReceive('getName')->andReturn('some'); $someConnection->shouldReceive('transactionLevel')->andReturn(0); $databaseManager = m::mock('Illuminate\\Database\\DatabaseManager'); $databaseManager->shouldReceive('connection')->with(null)->andReturn($defaultConnection); $databaseManager->shouldReceive('connection')->with('some')->andReturn($someConnection); $transactionHandler = m::mock('Xpressengine\\Database\\TransactionHandler'); $transactionHandler->shouldReceive('init')->andReturn(); $transactionHandler->shouldReceive('setCurrent')->andReturn(); $proxyManager = m::mock('Xpressengine\\Database\\ProxyManager'); $cache = m::mock('Xpressengine\\Support\\CacheInterface'); /** * @var \Illuminate\Database\DatabaseManager $databaseManager * @var \Xpressengine\Database\TransactionHandler $transactionHandler * @var \Xpressengine\Database\ProxyManager $proxyManager */ $coupler = DatabaseCoupler::instance($databaseManager, $transactionHandler, $proxyManager, $cache); $newConnector = m::mock('Xpressengine\\Database\\VirtualConnection'); $newConnector->shouldReceive('getName')->andReturn('default'); $coupler->addConnector('default', $newConnector); $this->assertEquals(1, count($coupler->connectors())); $newConnector = m::mock('Xpressengine\\Database\\VirtualConnection'); $newConnector->shouldReceive('getName')->andReturn('some'); $coupler->addConnector('some', $newConnector); $this->assertEquals(2, count($coupler->connectors())); $connector = $coupler->getConnector(); $this->assertEquals('default', $connector->getName()); $connector = $coupler->getConnector('some'); $this->assertEquals('some', $connector->getName()); $connection = $coupler->connect('default'); $this->assertEquals('default', $connection->getName()); $connection = $coupler->connect('some'); $this->assertEquals('some', $connection->getName()); }