/** * 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); }