2016-12-26 12 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

あなたはこのように、PHP 5.5以降static::classを使用することができます。

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

関連する問題