public static function connect($dsn, $user = null, $password = null, $args = [])
{
if (strpos($dsn, ':') === false) {
throw new Exception(["Your DSN format is invalid. Must be in 'driver:host:options' format", 'dsn' => $dsn]);
}
$driver = explode(':', $dsn, 2)[0];
switch (strtolower(isset($args['driver']) ?: $driver)) {
case 'mysql':
case 'dumper':
case 'counter':
case 'sqlite':
return new Persistence_SQL($dsn, $user, $password, $args);
default:
throw new Exception(['Unable to determine persistence driver from DSN', 'dsn' => $dsn]);
}
}