php - 如何从 Trait 获取父命名空间

标签 php laravel traits

我创建了一个特征,我希望能够使用该特征获取类的命名空间。这可能吗? self::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;
}

关于php - 如何从 Trait 获取父命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910295/

相关文章:

php - 使用外键从现有表创建 slug

c# - 你将如何在 C# 中实现 "trait"设计模式?

php - 在 Laravel Eloquent 模型中创建动态命名的修改器

php - Out of memory (allocated 50855936) (试图分配 50331646 字节)

php - [php] 中 foreach 循环中的求和值

php - 中央代码库中的多个网站管理文件夹

php - Laravel 获取二级关系

rust - 为什么不能将 Box<dyn Trait> 传递给以 &mut Trait 作为参数的函数

php - 无法通过 Facebook API 删除照片?

php - pdftk 错误 : Failed to open PDF file: