2

I created a trait and i want to be able to get the namespace of the class using the trait. is this possible? self::class gives me the class name of the parent but not the entire namespace

Ruben Gonzalez
  • 143
  • 1
  • 15

1 Answers1

4

You can use ReflectionClass->getNamespaceName() with the reflection of 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;
}
Stefmachine
  • 382
  • 4
  • 11