如何在PHP中使用静态方法获取类名?
问题描述:
其实我的问题比标题说得更复杂。如何在PHP中使用静态方法获取类名?
我想拥有一个静态方法的基类,该方法应该能够获取当前类的类名。
class Base
{
public static function className()
{
return '???';
}
}
class Foo extends Base
{
}
echo Foo::className();
我希望Foo
为输出。
正如一些人士指出,在php5.5它就是简单的用static::class
,我应该说我必须使用PHP5.3允许,我们正在使用的架构。 :(
答
对于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::class
或get_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
为什么不'的Foo :: class'? http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class – Hereblur
@ Hereblur @ Sumon Mahmud @ Ray Radin。 PHP5.3中的任何好东西.... – bijiDango
也许get_called_class()? http://php.net/get_called_class – Hereblur