public static function fromString($uri)
{
$parameters = parse_url($uri);
if (isset($parameters['user'])) {
$parameters['username'] = $parameters['user'];
}
if (isset($parameters['pass'])) {
$parameters['password'] = $parameters['pass'];
}
if (isset($parameters['path']) && strlen($parameters['path']) > 0) {
list(, $parameters['database']) = explode('/', $parameters['path'], 2);
}
unset($parameters['path'], $parameters['user'], $parameters['pass']);
return self::fromArray($parameters);
}