可以从PHP中的未实例化对象获取当前类的名称吗?

可以从PHP中的未实例化对象获取当前类的名称吗?,php,Php,我知道您通常可以使用get_class($this),但我需要在静态函数中获取该类的名称,其中该对象尚未实例化 请参阅以下代码: class ExampleClass { static function getClassName() { echo get_class($this); // doesn't work unless the object is instantiated. } } $test1 = new ExampleClass(); $te

我知道您通常可以使用get_class($this),但我需要在静态函数中获取该类的名称,其中该对象尚未实例化

请参阅以下代码:

class ExampleClass
{
    static function getClassName()
    {
        echo get_class($this); // doesn't work unless the object is instantiated.
    }
}

$test1 = new ExampleClass();
$test1->getClassName(); // works

ExampleClass::getClassName(); // doesn't work

我想你可以用_; CLASS _;来获取类名。例如:

class ExampleClass
{
    static function getClassName()
    {
        echo __CLASS__;
    }
}

如果希望从静态方法获取类名,我认为您正在寻找名为_class()的get_函数


有关更多信息,请参阅。

我的问题是,如何在不知道类名的情况下调用静态函数

我能想到的唯一两种方法是:

ExampleClass::getClassName(); //Hard Coded - the class name is hard and visible
$class = "ExampleClass";
$class::getClassName();       //Soft Coded - the class name is the value of $class

如果我们知道您试图拨打电话的背景,或许可以提供更好的解决方案?

您可能希望编辑您的问题,使其表明您理解$this在静态情况下没有任何意义-我想有些人可能只是认为您不理解$this的含义。请参阅我关于get_called_类的回答。请注意,该类将返回定义函数的类。如果你扩展它,你就不会得到子类。@Troleskn:很可能会咬到提问者的屁股。你也应该把它作为一个答案提交,这样更多的人就会看到它。我正在调用一个继承类,并且有一个开关()父类中需要类名来决定要做什么的语句您试图从中切换哪些变量数据需要静态函数?