获取没有命名空间的已执行静态函数的类名

时间:2016-10-20 02:14:37

标签: php

从静态函数中调用PHP中的get_called_class(),为您提供函数的类名,包括命名空间,如果从该命名空间外部调用,似乎。

有没有办法在没有命名空间的情况下获取类名?

(显然我明白可以检查get_called_class()返回的字符串并做一些hackish东西,但我希望有一种不那么强硬的方法去做)

2 个答案:

答案 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));
}