获取不合格类名的命名空间

时间:2015-06-03 11:06:03

标签: php namespaces

考虑以下PHP代码

namespace foo\bar;

class MyClass {}

namespace xyz;
use foo\bar\MyClass;

class OtherClass {}

$a = new MyClass();
$b = new OtherClass();

$a\foo\bar\MyClass的实例,而$b\xyz\OtherClass的实例。这些完全限定的类名,我可以通过调用get_class($a)get_class($b)来获取。但有没有办法获得完全限定的名称而不实例化对象?是否存在类似魔术函数fully_qualified_class_name的内容,fully_qualified_class_name('MyClass')会返回\foo\bar\MyClass,而fully_qualified_class_name('OtherClass')会返回\xyz\OtherClass?或者我必须自己编写完全合格的名字?

1 个答案:

答案 0 :(得分:2)

从PHP 5.5开始,您可以通过::class

使用班级名称解析
namespace foo\bar {
    class MyClass {}
}

namespace xyz {
    use foo\bar\MyClass;

    class OtherClass {}

    echo 'OtherClass namespace: ', OtherClass::class, "\n"; // print "OtherClass namespace: xyz\OtherClass"
    echo 'MyClass namespace: ', MyClass::class, "\n"; // print "MyClass namespace: foo\bar\MyClass"
}