如何从Trait获取父名称空间

时间:2018-10-20 21:32:00

标签: php laravel traits

我创建了一个特征,我希望能够使用该特征获取类的名称空间。这可能吗? self::class给了我父类的类名,但没有给我整个命名空间

1 个答案:

答案 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;
}