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's something like this?? $fullClassName = get_qualified_classname($var); // outputs 'My\Awesome\Namespace\Foo' echo $fullClassName } 

    Вы должны использовать 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 в 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 

    Это пример прямой копии.

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

     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 

    Надеюсь это поможет…

    Больше информации о :: классе здесь .