示例#1
0
 /**
 * Creates a new db layer
 *
 * @abstract 
 * @access   public
 *
 * @param    String      $layerType          'ADODB', 'METABASE', 'MYSQL', 'PEAR', PHPLIB'
 * @param    String      $libraryPath        path to the abstraction layer
 * @param    String      $dbType             for the abstraction layers (e.g. 'ODBC')
 * @param    Integer     $preferredResType   the preferred result type
 * 
 * @returns  AbstractDB
 */
 public static function getLayer($layerType, $libraryPath, $dbType, $preferredResType = ANYDB_RES_ASSOC)
 {
     $path = dirname(__FILE__) . '/dbs/';
     $layer = strtoupper(trim($layerType));
     // checks if php extension is loaded
     if ($dbType != '') {
         anyDB::checkForDB($dbType);
     } else {
         anyDB::checkForDB($layer);
     }
     // gets the layer
     $res = null;
     switch ($layer) {
         case 'DBX':
             require_once $path . 'DbxDB.php';
             $res = new DbxDB($libraryPath, $dbType, $preferredResType);
             break;
         case 'METABASE':
             require_once $path . 'MetabaseDB.php';
             $res = new MetabaseDB($libraryPath, $dbType, $preferredResType);
             break;
         case 'MYSQL':
             require_once $path . 'MysqlDB.php';
             $res = new MysqlDB('', 'mysql', $preferredResType);
             break;
         case 'PGSQL':
         case 'POSTGRES':
             require_once $path . 'PostgresDB.php';
             $res = new PostgresDB('', 'pgsql', $preferredResType);
             break;
         case 'PEAR':
             require_once $path . 'PearDB.php';
             $res = new PearDB($libraryPath, $dbType, $preferredResType);
             break;
         case 'PHPLIB':
             require_once $path . 'PhplibDB.php';
             $res = new PhplibDB($libraryPath, $dbType, $preferredResType);
             break;
         case 'ADODB':
             require_once $path . 'ADOdbDB.php';
             $res = new ADOdbDB($libraryPath, $dbType, $preferredResType);
             break;
         case 'SQLITE':
             require_once $path . 'SQLiteDB.php';
             $res = new SQLiteDB('', 'sqlite', $preferredResType);
             break;
         default:
             die('Unknown database layer!');
     }
     return $res;
 }