Файл: concrete5.7.5.6/concrete/src/Database/Connection/ConnectionFactory.php
Строк: 84
<?php
namespace ConcreteCoreDatabaseConnection;
use ConcreteCoreApplicationApplication;
use ConcreteCoreDatabaseDriverDriverManager;
use DoctrineDBALDBALException;
class ConnectionFactory
{
/** @var Application */
protected $app;
/** @var DriverManager */
protected $driver_manager;
public function __construct(Application $app, DriverManager $driver_manager)
{
$this->app = $app;
$this->driver_manager = $driver_manager;
}
public function createConnection($config)
{
$driver = $this->driver_manager->driver(array_get($config, 'driver', ''));
if (!($driver instanceof DoctrineDBALDriver)) {
$driver = $this->driver_manager->driver();
}
$params = $config;
$params['host'] = array_get($params, 'host', array_get($config, 'server'));
$params['user'] = array_get($params, 'user', array_get($config, 'username'));
$params['wrapperClass'] = array_get($config, 'wrapperClass', 'ConcreteCoreDatabaseConnectionConnection');
unset($params['driver']);
$wrapperClass = 'DoctrineDBALConnection';
if (isset($params['wrapperClass'])) {
if (is_subclass_of($params['wrapperClass'], $wrapperClass)) {
$wrapperClass = $params['wrapperClass'];
} else {
throw DBALException::invalidWrapperClass($params['wrapperClass']);
}
}
return new $wrapperClass($params, $driver);
}
/**
* @param $config
* @param $name
* @return DoctrineDBALConnection
* @throws DBALException
*/
public function make($config, $name)
{
return $this->createConnection($config);
}
/**
* @return DriverManager
*/
public function getDriverManager()
{
return $this->driver_manager;
}
}