コード例 #1
0
ファイル: DriverManager.php プロジェクト: jackbravo/doctrine
 /**
  * Creates a connection object based on the specified parameters.
  * This method returns a Doctrine\DBAL\Connection which wraps the underlying
  * driver connection.
  *
  * $params must contain at least one of the following.
  * 
  * Either 'driver' with one of the following values:
  *     pdo_mysql
  *     pdo_sqlite
  *     pdo_pgsql
  *     pdo_oracle
  *     pdo_mssql
  *     pdo_firebird
  *     pdo_informix
  * 
  * OR 'driverClass' that contains the full class name (with namespace) of the
  * driver class to instantiate.
  * 
  * Other (optional) parameters:
  * 
  * <b>user (string)</b>:
  * The username to use when connecting. 
  * 
  * <b>password (string)</b>:
  * The password to use when connecting.
  * 
  * <b>driverOptions (array)</b>:
  * Any additional driver-specific options for the driver. These are just passed
  * through to the driver.
  * 
  * <b>pdo</b>:
  * You can pass an existing PDO instance through this parameter. The PDO
  * instance will be wrapped in a Doctrine\DBAL\Connection.
  * 
  * <b>wrapperClass</b>:
  * You may specify a custom wrapper class through the 'wrapperClass'
  * parameter but this class MUST inherit from Doctrine\DBAL\Connection.
  * 
  * @param array $params The parameters.
  * @param Doctrine\DBAL\Configuration The configuration to use.
  * @param Doctrine\Common\EventManager The event manager to use.
  * @return Doctrine\DBAL\Connection
  */
 public static function getConnection(array $params, Configuration $config = null, EventManager $eventManager = null)
 {
     // create default config and event manager, if not set
     if (!$config) {
         $config = new Configuration();
     }
     if (!$eventManager) {
         $eventManager = new EventManager();
     }
     // check for existing pdo object
     if (isset($params['pdo']) && !$params['pdo'] instanceof PDO) {
         throw DoctrineException::invalidPDOInstance();
     } else {
         if (isset($params['pdo'])) {
             $params['driver'] = $params['pdo']->getAttribute(PDO::ATTR_DRIVER_NAME);
         } else {
             self::_checkParams($params);
         }
     }
     if (isset($params['driverClass'])) {
         $className = $params['driverClass'];
     } else {
         $className = self::$_driverMap[$params['driver']];
     }
     $driver = new $className();
     $wrapperClass = 'Doctrine\\DBAL\\Connection';
     if (isset($params['wrapperClass']) && is_subclass_of($params['wrapperClass'], $wrapperClass)) {
         $wrapperClass = $params['wrapperClass'];
     }
     return new $wrapperClass($params, $driver, $config, $eventManager);
 }