public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; }
/** * Connecting with database. * * Function create an singleton object, and creates database connection. * Connection handler is stored in self::$_instance->db variable. * * @param string $type database type. Only 'mysql' like for now. * @return object PDO * @throws CESyntaxError if incorrect database type * @throws CEDBError if problem with connect with database * * @access public * @static */ public static function connect($type = 'mysql') { if (!isset(self::$_instance)) { try { switch ($type) { case 'mysql': $dsn = sprintf('mysql:host=%s;dbname=%s', DB_HOST, DB_NAME); self::$_instance = new PDO($dsn, DB_USER, DB_PASS); break; default: throw new CESyntaxError('Invalid database type.'); } self::$_instance->setAttribute(PDO::ATTR_AUTOCOMMIT, true); self::$_instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$_instance->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL); self::$_instance->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); self::$_instance->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); } catch (PDOException $e) { throw new CEDBError(sprintf('Connection failed: %s.', $e->getMessage())); } } return self::$_instance; }