static function dbConnect() { if (self::$pdo instanceof PDO) { return; } try { try { self::$pdo = new PDO(self::$settings['database']['dsn'], self::$settings['database']['username'], self::$settings['database']['password'], self::$settings['database']['options']); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die($e->getMessage()); } } catch (PDOException $e) { die('DB Connection failed'); } if (0 === strpos(self::$settings['database']['dsn'], 'mysql')) { self::$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); if (!empty(self::$settings['database']['collation'])) { self::$pdo->query('SET NAMES ' . self::$settings['database']['collation']); } } if (!empty(self::$settings['database']['upon_connection_queries'])) { foreach (self::$settings['database']['upon_connection_queries'] as $sql) { self::$pdo->query($sql); } } }
/** * @return PDO */ static function pdo() { if (is_object(self::$pdo)) { return self::$pdo; } else { // @todo lazy connection w/help of Naf_Proxy self::$pdo = new PDO(self::$settings['database']['dsn'], self::$settings['database']['username'], self::$settings['database']['password'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); foreach ((array) @self::$settings['database']['startup_queries'] as $sql) { self::$pdo->exec($sql); } if ('mysql' == self::$pdo->getAttribute(PDO::ATTR_DRIVER_NAME)) { self::$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); } return self::$pdo; } }
/** * @return PDO */ static function getConnection() { if (null === static::$connection) { ActiveRecord::setConnection(\Naf::pdo()); } return static::$connection; }