que - php class not found namespace
PHP: ¿Cómo obtener un nombre de clase totalmente calificado de un alias? (2)
En PHP, si quiero obtener el nombre de clase totalmente calificado de una clase que se incluye con una declaración de use
, ¿cómo hago eso? Por ejemplo,
<?php
namespace MyNamespace;
use Namespace/To/Class as MyClass;
function getNamespaceOfMyClass() {
// Return ??
}
echo getNamespaceOfMyClass();
Sé que una forma es hacer get_class(new MyClass())
, pero ¿qué get_class(new MyClass())
si no puedo / no quiero hacer una instancia de MyClass
? ¡Gracias!
En PHP 5.5 en adelante puedes hacer esto usando ::class
:
echo MyClass::class;
Desafortunadamente, esto no es posible en versiones anteriores, donde tienes que codificar el nombre de la clase o crear una instancia primero y usar get_class
en él.
En la versión inicial de PHP (es decir, PHP <5.5) puede obtener el nombre de la clase a través de Reflection API, así:
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();
Por supuesto, si esto no es costoso para su caso.
Nota
Desde PHP 5.4:
$classname = (new /ReflectionClass(new Type/DateType))->getName();