public static function resolvePath($path, array $vars, array $values) {
$map = array();
foreach ($vars as $var) {
if (false === strpos($path, '{' . $var . '}')) {
continue;
}
if (!isset($values[$var])) {
throw new \InvalidArgumentException(sprintf('The path "%s" contains the variable "%s", but was not given any value for it.', $path, $var));
}
$map['{' . $var . '}'] = $values[$var];
}
return strtr($path, $map);
}