Пример #1
0
 /**
  * Connect to the database or return connection instance.
  *
  * @return PDO Instance of PDO connection
  */
 private static function _connect()
 {
     // do we have an instance already?
     if (!self::$instance instanceof PDO) {
         try {
             // which driver are we using?
             switch (strtolower(DB_DRIVER)) {
                 // MySQL
                 case 'mysql':
                     self::$instance = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';unix_socket=/var/run/mysqld/mysqld.sock', DB_USER, DB_PASS);
                     break;
                     // PostgreSQL (untested)
                 // PostgreSQL (untested)
                 case 'pgsql':
                     self::$instance = new PDO('pgsql:dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS);
                     break;
                     // SQLite 3 that can only be under BASEPATH
                 // SQLite 3 that can only be under BASEPATH
                 case 'sqlite':
                     self::$instance = new PDO('sqlite:' . BASEPATH . '/' . DB_NAME);
                     break;
             }
             // error mode on, throw exceptions
             self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         } catch (PDOException $exception) {
             try {
                 throw new Fari_Exception('Cannot connect to DB: ' . $exception->getMessage() . '.');
             } catch (Fari_Exception $exception) {
                 $exception->fire();
             }
         }
     }
     return self::$instance;
 }