如何在PHP中使用静态方法获取类名?

问题描述:

其实我的问题比标题说得更复杂。如何在PHP中使用静态方法获取类名?

我想拥有一个静态方法的基类,该方法应该能够获取当前类的类名。

class Base 
{ 
    public static function className() 
    { 
     return '???'; 
    } 
} 

class Foo extends Base 
{ 

} 

echo Foo::className(); 

我希望Foo为输出。


正如一些人士指出,在php5.5它就是简单的用static::class,我应该说我必须使用PHP5.3允许,我们正在使用的架构。 :(

+0

为什么不'的Foo :: class'? http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class – Hereblur

+0

@ Hereblur @ Sumon Mahmud @ Ray Radin。 PHP5.3中的任何好东西.... – bijiDango

+1

也许get_called_class()? http://php.net/get_called_class – Hereblur

对于PHP> = 5.3,您可以使用get_called_class()

实施例从http://php.net/get_called_class

<?php 

class foo { 
    static public function test() { 
     return get_called_class(); 
    } 
} 

class bar extends foo { 
} 

print foo::test(); 
print bar::test(); 
?> 

复制上例将输出:

foo 
bar 

您可以使用static::class因为PHP 5.5,是这样的:

return static::class; 

简单地尝试这种在与static::classget_called_class()都将返回类名从类调用这个静态方法

<?php 
class Base 
{ 
    public static function className() 
    { 
     return static::class; 
     // or 
     //return get_called_class() 
    } 
} 

class Foo extends Base 
{ 

} 
class Doo extends Base 
{ 

} 
echo Foo::className(); // Output will be Foo 
echo Bar::className(); // Output will be Bar 

参考:http://php.net/manual/en/language.oop5.basic.php

http://php.net/get_called_class