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 здесь.