private function resolveStringName(string $namespace = null, string $name, array $uses) : string
{
if (strpos($name, '\\') === 0) {
return ltrim($name, '\\');
}
$nameParts = explode('\\', $name);
$firstNamePart = $nameParts[0];
if (isset($uses[$firstNamePart])) {
if (count($nameParts) === 1) {
return $uses[$firstNamePart];
}
array_shift($nameParts);
return sprintf('%s\\%s', $uses[$firstNamePart], implode('\\', $nameParts));
}
if ($namespace !== null) {
return sprintf('%s\\%s', $namespace, $name);
}
return $name;
}