在PHP中,如果我想获得use
语句中包含的类的完全限定类名,我该怎么做?例如,
<?php
namespace MyNamespace;
use Namespace\To\Class as MyClass;
function getNamespaceOfMyClass() {
// Return ??
}
echo getNamespaceOfMyClass();
我知道一种方法是get_class(new MyClass())
,但如果我不能/不想制作MyClass
的实例呢?谢谢!
答案 0 :(得分:24)
在PHP 5.5及更高版本中,您可以使用::class
:
echo MyClass::class;
不幸的是,在早期版本中根本无法实现这一点,您必须先对类名进行硬编码或首先创建实例并在其上使用get_class
。
答案 1 :(得分:4)
在早期的PHP版本(即PHP <5.5)上,您可以通过Reflection API获取类名,如下所示:
namespace App\Core;
use Symfony\Component\Form\Extension\Core\Type;
class MyClass {}
$refclass = new \ReflectionClass(new Type\DateType);
print $refclass->getName();
$refclass = new \ReflectionClass(new MyClass());
print $refclass->getName();
当然,如果这对你的情况来说并不昂贵。
注意强>
自PHP 5.4起:
$classname = (new \ReflectionClass(new Type\DateType))->getName();