2016-12-26 72 views
2

其實我的問題比標題說得更復雜。如何在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

回答

1

對於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 
2

您可以使用static::class因爲PHP 5.5,是這樣的:

return static::class; 
2

簡單地嘗試這種在與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

相關問題