PHP:如何从别名中获取完全限定的类名



在PHP中,如果我想获取包含在use语句中的类的完全限定类名,我该怎么做?例如

<?php
namespace MyNamespace;
use NamespaceToClass as MyClass;
function getNamespaceOfMyClass() {
    // Return ??
}
echo getNamespaceOfMyClass();

我知道一种方法是做get_class(new MyClass()),但是如果我不能/不想做MyClass的实例怎么办?谢谢!

在 PHP 5.5 及更高版本中,您可以使用 ::class 执行此操作:

echo MyClass::class;

不幸的是,这在早期版本上根本不可能,您必须对类名进行硬编码,或者首先创建一个实例并在其上使用get_class

在早期的 PHP 版本(即 PHP <5.5)上,您可以通过 Reflection API 获取类名,如下所示:

namespace AppCore;
use SymfonyComponentFormExtensionCoreType;
class MyClass {}
$refclass = new ReflectionClass(new TypeDateType);
print $refclass->getName();
$refclass = new ReflectionClass(new MyClass());
print $refclass->getName();

当然,如果这对您的情况来说并不昂贵。

注意
从 PHP 5.4 开始:

$classname = (new ReflectionClass(new TypeDateType))->getName();

最新更新