protected function connect($host, $user, $pass, $db, array $options = array())
{
$options += array('charset' => 'utf8');
try {
$pdo = $this->connection = new PDO("mysql:host=" . $host . ";dbname=" . $db . ";charset=" . $options['charset'], $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . $options['charset'] . ', sql_mode=ALLOW_INVALID_DATES'));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_PERSISTENT, false);
} catch (PDOException $error) {
throw $error->getCode() === self::ERROR_UNKNOWN_DATABASE ? new SelectionException($error->getMessage(), $error->getCode(), $error) : new ConnectionException($error->getMessage(), $error->getCode(), $error);
}
}