original_string: static public function create( $dbParams )
      {
          if ( is_string( $dbParams ) )
          {
              $dbParams = self::parseDSN( $dbParams );
          }
          else if ( !is_array( $dbParams ) )
          {
              throw new ezcBaseValueException( 'dbParams', $dbParams, 'string or array', 'parameter' );
          }
  
          $impName = null; // implementation name
  
          foreach ( $dbParams as $key => $val )
          {
              if ( in_array( $key, array( 'phptype', 'type', 'handler', 'driver' ) ) )
              {
                   $impName = $val;
                   break;
              }
          }
  
          if ( $impName === null || !array_key_exists( $impName, self::$implementations ) )
          {
              throw new ezcDbHandlerNotFoundException( $impName, array_keys( self::$implementations ) );
          }
  
          $className = self::$implementations[$impName];
          $instance = new $className( $dbParams );
  
          return $instance;
      }
code: static public function create( $dbParams )
      {
          if ( is_string( $dbParams ) )
          {
              $dbParams = self::parseDSN( $dbParams );
          }
          else if ( !is_array( $dbParams ) )
          {
              throw new ezcBaseValueException( 'dbParams', $dbParams, 'string or array', 'parameter' );
          }
  
          $impName = null; // implementation name
  
          foreach ( $dbParams as $key => $val )
          {
              if ( in_array( $key, array( 'phptype', 'type', 'handler', 'driver' ) ) )
              {
                   $impName = $val;
                   break;
              }
          }
  
          if ( $impName === null || !array_key_exists( $impName, self::$implementations ) )
          {
              throw new ezcDbHandlerNotFoundException( $impName, array_keys( self::$implementations ) );
          }
  
          $className = self::$implementations[$impName];
          $instance = new $className( $dbParams );
  
          return $instance;
      }
code_tokens: static public function create ( $ dbParams ) { if ( is_string ( $ dbParams ) ) { $ dbParams = self :: parseDSN ( $ dbParams ) ; } else if ( ! is_array ( $ dbParams ) ) { throw new ezcBaseValueException ( 'dbParams' , $ dbParams , 'string or array' , 'parameter' ) ; } $ impName = null ; // implementation name foreach ( $ dbParams as $ key => $ val ) { if ( in_array ( $ key , array ( 'phptype' , 'type' , 'handler' , 'driver' ) ) ) { $ impName = $ val ; break ; } } if ( $ impName === null || ! array_key_exists ( $ impName , self :: $ implementations ) ) { throw new ezcDbHandlerNotFoundException ( $ impName , array_keys ( self :: $ implementations ) ) ; } $ className = self :: $ implementations [ $ impName ] ; $ instance = new $ className ( $ dbParams ) ; return $ instance ; }
docstring: Creates and returns an instance of the specified ezcDbHandler implementation.
  
  Supported database parameters are:
  - phptype|type|handler|driver: Database implementation
  - user|username:               Database user name
  - pass|password:               Database user password
  - dbname|database:             Database name
  - host|hostspec:               Name of the host database is running on
  - port:                        TCP port
  - charset:                     Client character set
  - socket:                      UNIX socket path
  
  The list above is actually driver-dependent and may be extended in the future.
  You can specify any parameters your database handler supports.
  
  @throws ezcDbHandlerNotFoundException if the requested database handler could not be found.
  @param   mixed  $dbParams Database parameters
  (driver, host, port, user, pass, etc).
  May be specified either as array (key => val ....) or as DSN string.
  Format of the DSN is the same as accepted by PEAR::DB::parseDSN().
  @return ezcDbHandler
docstring_tokens: Creates and returns an instance of the specified ezcDbHandler implementation .