Как получить родительское пространство имен от Trait - PullRequest
0 голосов
/ 21 октября 2018

Я создал черту, и я хочу иметь возможность получить пространство имен класса, используя эту черту.Это возможно?self::class дает мне имя класса родителя, но не все пространство имен

1 Ответ

0 голосов
/ 21 октября 2018

Вы можете использовать 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;
}
...