从静态函数中调用PHP中的get_called_class()
,为您提供函数的类名,包括命名空间,如果从该命名空间外部调用,似乎。
有没有办法在没有命名空间的情况下获取类名?
(显然我明白可以检查get_called_class()
返回的字符串并做一些hackish东西,但我希望有一种不那么强硬的方法去做)
答案 0 :(得分:2)
获取没有命名空间的类名
是的,您可以使用ReflectionClass来完成。由于您的问题涉及在静态方法中执行此操作,因此您可以获取类名称:
$reflect = new \ReflectionClass(get_called_class());
$reflect->getShortName();
它使用ReflectionClass构造函数,方法是传递一个字符串,其中包含要检查的类的完全命名空间名称。
在How do I get an object's unqualified (short) class name?处存在类似的问题但是它并未引用在静态方法中执行此操作,因此示例将实例化对象传递给ReflectionClass构造函数。
答案 1 :(得分:0)
您可以使用:
/**
* Get the class "basename" of the given object / class.
*
* @param string|object $class
* @return string
*/
function class_basename($class)
{
$class = is_object($class) ? get_class($class) : $class;
return basename(str_replace('\\', '/', $class));
}