public function fullyQualifiedName($class)
{
if ($this->namespace) {
$namespace = str_replace('\\\\', '\\', '\\' . $this->namespace . '\\');
} else {
$namespace = '\\';
// global namespace
}
if (strcasecmp($class, $this->class) === 0) {
return $namespace . $this->class;
}
$pos = strpos($class, '\\');
if ($pos !== false) {
if ($pos === 0) {
// Fully qualified name (\Foo\Bar)
return $class;
}
// Qualified name (Foo\Bar)
if ($this->uses) {
foreach ($this->uses as $alias => $aliasedNamespace) {
$alias .= '\\';
if (strcasecmp(substr($class, 0, strlen($alias)), $alias) === 0) {
// Aliased namespace (use \Long\Namespace as Foo)
return '\\' . $aliasedNamespace . substr($class, strlen($alias) - 1);
}
}
}
} elseif ($this->uses) {
// Unqualified name (Foo)
foreach ($this->uses as $alias => $aliasedNamespace) {
if (strcasecmp($alias, $class) === 0) {
return '\\' . $aliasedNamespace;
}
}
}
return $namespace . $class;
}