PHP: Как получить полное имя класса из псевдонима?
В PHP, если я хочу получить полное имя класса класса, включенного в оператор use
, как это сделать? Например,
<?php
namespace MyNamespace;
use Namespace\To\Class as MyClass;
function getNamespaceOfMyClass() {
// Return ??
}
echo getNamespaceOfMyClass();
Я знаю, что один способ - сделать get_class(new MyClass())
, но что, если я не могу/не хочу делать экземпляр MyClass
? Спасибо!
Ответы
Ответ 1
В PHP 5.5 и далее вы можете сделать это с помощью ::class
:
echo MyClass::class;
К сожалению, это невозможно вообще в более ранних версиях, где вам нужно либо жестко указать имя класса, либо создать экземпляр сначала, и использовать get_class
на нем.
Ответ 2
В ранней версии PHP (то есть PHP < 5.5) вы можете получить имя класса с помощью Reflection API, например:
namespace App\Core;
use Symfony\Component\Form\Extension\Core\Type;
class MyClass {}
$refclass = new \ReflectionClass(new Type\DateType);
print $refclass->getName();
$refclass = new \ReflectionClass(new MyClass());
print $refclass->getName();
Конечно, если это не дорого для вашего дела.
Примечание
Поскольку PHP 5.4:
$classname = (new \ReflectionClass(new Type\DateType))->getName();