1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
-
- /*
- * This file is part of the Doctrine Bundle
- *
- * The code was originally distributed inside the Symfony framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * (c) Doctrine Project, Benjamin Eberlei <kontakt@beberlei.de>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Doctrine\Bundle\DoctrineBundle;
-
- use Doctrine\Common\EventManager;
- use Doctrine\DBAL\Configuration;
- use Doctrine\DBAL\DriverManager;
- use Doctrine\DBAL\Types\Type;
-
- /**
- * Connection
- */
- class ConnectionFactory
- {
- private $typesConfig = array();
- private $commentedTypes = array();
- private $initialized = false;
-
- /**
- * Construct.
- *
- * @param array $typesConfig
- */
- public function __construct(array $typesConfig)
- {
- $this->typesConfig = $typesConfig;
- }
-
- /**
- * Create a connection by name.
- *
- * @param array $params
- * @param Configuration $config
- * @param EventManager $eventManager
- *
- * @return \Doctrine\DBAL\Connection
- */
- public function createConnection(array $params, Configuration $config = null, EventManager $eventManager = null, array $mappingTypes = array())
- {
- if (!$this->initialized) {
- $this->initializeTypes();
- $this->initialized = true;
- }
-
- $connection = DriverManager::getConnection($params, $config, $eventManager);
-
- if (!empty($mappingTypes)) {
- $platform = $connection->getDatabasePlatform();
- foreach ($mappingTypes as $dbType => $doctrineType) {
- $platform->registerDoctrineTypeMapping($dbType, $doctrineType);
- }
- foreach ($this->commentedTypes as $type) {
- $platform->markDoctrineTypeCommented(Type::getType($type));
- }
- }
-
- return $connection;
- }
-
- /**
- * initialize the types
- */
- private function initializeTypes()
- {
- foreach ($this->typesConfig as $type => $typeConfig) {
- if (Type::hasType($type)) {
- Type::overrideType($type, $typeConfig['class']);
- } else {
- Type::addType($type, $typeConfig['class']);
- }
- if ($typeConfig['commented']) {
- $this->commentedTypes[] = $type;
- }
- }
- }
- }
|