在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();