PHP 5.4: Получение Полноценного имени класса переменной экземпляра

Я знаю, что на PHP 5.5 есть статическое поле class, но я должен придерживаться PHP 5.4. Можно ли получить полное имя класса из переменной?

Пример:

namespace My\Awesome\Namespace

class Foo {

}

И где-то еще в коде:

public function bar() {
   $var = new \My\Awesome\Namespace\Foo();

   // maybe there something like this??
   $fullClassName = get_qualified_classname($var);

   // outputs 'My\Awesome\Namespace\Foo'
   echo $fullClassName 
}

Ответ 1

Вы должны использовать get_class

Если вы используете пространства имен, эта функция вернет имя класса, включая пространство имен, поэтому следите, не проверит ли ваш код какие-либо проверки.

namespace Shop; 

<?php 
class Foo 
{ 
  public function __construct() 
  { 
     echo "Foo"; 
  } 
} 

//Different file 

include('inc/Shop.class.php'); 

$test = new Shop\Foo(); 
echo get_class($test);//returns Shop\Foo 

Это пример прямой копии с помощью here

Ответ 2

Я знаю, что это старый вопрос, но для людей, которые все еще находят это, я бы предложил такой подход:

namespace Foo;

class Bar
{
    public static function fqcn()
    {
        return __CLASS__;
    }
}

// Usage:
use Foo\Bar;
// ...
Bar::fqcn(); // Return a string of Foo\Bar

Если вы используете PHP 5.5, вы можете просто сделать это:

namespace Foo;

class Bar
{}

// Usage:
use Foo\Bar;
// ...
Bar::class; // Return a string of Foo\Bar

Надеюсь, что это поможет...

Дополнительная информация о:: class здесь.