/**
  *  Using this static function, you can get an instance of a YDDatabaseDriver class.
  *
  *  @param $driver  Name of the database driver or array containing drivername, file name and class name.
  *  @param $db      Database name to use for the connection.
  *  @param $user    (optional) User name to use for the connection.
  *  @param $pass    (optional) Password to use for the connection.
  *  @param $host    (optional) Host name to use for the connection.
  *
  *  @returns    An instance of YDDatabaseDriver
  *
  *  @static
  */
 function getInstance($driver, $db, $user = '', $pass = '', $host = '')
 {
     // The list of known drivers
     $regDrivers = array();
     // Register new driver
     if (is_array($driver) && isset($driver['drivername'])) {
         // Register a new driver
         $regDrivers[strtolower($driver['drivername'])] = $driver;
         $driver = $driver['drivername'];
     } else {
         // Get the standard driver list
         $regDrivers = YDDatabase::getSupportedDrivers();
         // Check if the driver exists
         if (!array_key_exists(strtolower($driver), $regDrivers)) {
             trigger_error('Unsupported database type: "' . $driver . '".', YD_ERROR);
         }
     }
     // Include the driver
     if (!empty($regDrivers[strtolower($driver)]['file'])) {
         if (is_file($regDrivers[strtolower($driver)]['file'])) {
             include_once $regDrivers[strtolower($driver)]['file'];
         } else {
             include_once dirname(__FILE__) . '/YDDatabaseDrivers/' . $regDrivers[strtolower($driver)]['file'];
         }
     }
     // Check if the driver is supported
     if (!call_user_func(array($regDrivers[strtolower($driver)]['class'], 'isSupported'))) {
         trigger_error('Unsupported database type: "' . $driver . '". Extension is not loaded.', YD_ERROR);
     }
     // Make a new connection object and return it
     $className = $regDrivers[strtolower($driver)]['class'];
     return new $className($db, $user, $pass, $host);
 }