如何从 Trait 获取父命名空间
How to get parent namespace from Trait
我创建了一个特征,我希望能够使用该特征获取 class 的命名空间。这可能吗? self::class
给我父的 class 名称,但不是整个命名空间
您可以将 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;
}
我创建了一个特征,我希望能够使用该特征获取 class 的命名空间。这可能吗? self::class
给我父的 class 名称,但不是整个命名空间
您可以将 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;
}