2012-10-03 17 views
5

Olası Çoğalt:
Get class name from extended classkonstrüktör sınıfın sınıf adını alma

varsayalım ben şu var:

class Foo 
{ 
    public $name; 

    public __construct() 
    { 
    $this->name = __CLASS__; 
    } 
} 

class Bar extends Foo 
{ 
} 

class FooBar extends Foo 
{ 
} 

$bar = new Bar(); 
echo $bar->name; // will output 'Foo', but I want 'Bar' 

$foobar = new FooBar(); 
echo $foobar->name; // will output 'Foo', but I want 'FooBar' 

adını almak için bir yolu var mı Oluşturma sınıfının adı, ismi genişletilmiş bir sınıfa koymadan adı Foo sınıfında mı ayarlıyorsunuz?

Not: Foo'dan türetilmiş çok sayıda sınıf var, her türetilmiş sınıftaki adı ayarlamak çok fazla kodlama olacaktır. sınıf adını almak için php fonksiyonunda bir yapı vardır

+0

Ne 'get_class()' ve diğer tüm ilgili fctns hakkında? – Havelock

cevap

0

get_class()

$fooBar = new FooBar(); 
echo get_class($fooBar); //will output FooBar 
3

Bu çok kolaydır: sadece get_called_class kullanın:

$this->name = get_called_class(); 

Bu tanıtıldı geç statik bağlama özelliklerinin bir parçasıdır PHP 5.3'te. Yöntemin tanımlandığı sınıftan ziyade, adı verilen sınıfı ifade eder.

+2

Muhtemelen buna gerek yok (ve bağımlılık için> = 5.3 ya da), '__construct' gerçekten statik bir yöntem değil (bu '$' ye erişebilir) – lanzz

İlgili konular