/** * @param $config * * @throws \Exception */ private static function prepareDoctrine(&$config) { $databases = $config['databases']; if (isset($databases['main'])) { $config['parameters']['main_database'] = $databases['main']; } else { $config['parameters']['main_database'] = $databases['mysql']['enabled'] ? 'mysql' : 'mongo'; } $mapping = array_merge(['AppBundle' => ['type' => 'yml', 'prefix' => 'Discord\\Base\\AppBundle\\Model', 'alias' => 'App']], isset($config['databases']['mappings']) ? $config['databases']['mappings'] : []); unset($config['databases']); if ($databases['mysql']['enabled']) { /** @var MysqlDsn $mysql */ $mysql = Dsn::parse($databases['mysql']['dsn'])->toArray(); $config['doctrine'] = ['dbal' => ['connections' => ['default' => ['dbname' => $mysql['database'], 'host' => $mysql['host'], 'port' => $mysql['port'], 'user' => $mysql['user'], 'password' => $mysql['pass']]]], 'orm' => ['auto_mapping' => false, 'mappings' => !isset($databases['main']) || $databases['main'] === 'mysql' ? $mapping : null]]; } if ($databases['mongo']['enabled']) { $config['doctrine_mongodb'] = ['connections' => ['default' => ['server' => $databases['mongo']['dsn']]], 'document_managers' => ['default' => ['auto_mapping' => false, 'mappings' => !isset($databases['main']) || $databases['main'] === 'mongo' ? $mapping : null]]]; } }
/** * __construct * * Create and assign the raw dsn instance, merge default options * and then set keyMap and replacements properties from passed options * * @param string $url * @param array $options * @return void */ public function __construct($url = '', $options = []) { $this->dsn = DsnInstance::parse($url); $options = $this->mergeDefaultOptions($options); $opts = ['keyMap', 'replacements']; foreach ($opts as $key) { if (!empty($options[$key])) { $this->{$key}($options[$key]); } } }
/** * testMap * * @return void */ public function testMap() { Dsn::map('special', '\\AD7six\\Dsn\\Test\\TestCase\\SpecialTestDsn'); $dsn = Dsn::parse('special://host/path'); $this->assertInstanceOf('\\AD7six\\Dsn\\Test\\TestCase\\SpecialTestDsn', $dsn, 'Modifying the scheme map should be honored'); }