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

时间:2013-11-08 23:03:14

标签: php class namespaces alias

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

<?php
namespace MyNamespace;

use Namespace\To\Class as MyClass;

function getNamespaceOfMyClass() {
    // Return ??
}

echo getNamespaceOfMyClass();

我知道一种方法是get_class(new MyClass()),但如果我不能/不想制作MyClass的实例呢?谢谢!

2 个答案:

答案 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();