我创建了一个特征,我希望能够使用该特征获取类的名称空间。这可能吗? self::class
给了我父类的类名,但没有给我整个命名空间
答案 0 :(得分:2)
您可以使用ReflectionClass-> getNamespaceName()反映self :: class。
MyTrait.php
namespace MyTraitNamespace;
Trait MyTrait{
public function echoClassNamespace()
{
$ref = new \ReflectionClass(self::class);
echo $ref->getNamespaceName(); //Will echo MyClassNamespace
}
public function echoTraitNamespace()
{
echo __NAMESPACE__; //Will echo MyTraitNamespace
}
}
MyClass.php
namespace MyClassNamespace;
use MyTraitNamespace\MyTrait;
class MyClass{
use MyTrait;
}