2012-10-03 16 views
5

संभव डुप्लिकेट:
Get class name from extended classनिर्माण वर्ग के वर्ग के नाम हो रही

मान लीजिए मैं निम्नलिखित है:

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' 

वहाँ एक रास्ता नाम पाने के लिए है एक विस्तारित वर्ग में नाम स्थापित किए बिना निर्माण वर्ग का कक्षा फू में नाम स्थापित करना?

नोट: मेरे पास फू से व्युत्पन्न बहुत से वर्गीकृत हैं, प्रत्येक व्युत्पन्न कक्षा में नाम सेट करना बहुत कोडिंग होगा।

+0

क्या 'get_class()' और सभी अन्य जुड़े fctns के बारे में? – Havelock

उत्तर

0

वहाँ php समारोह में निर्माण वर्ग के नाम पाने के लिए है get_class()

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

यह बहुत आसान है: बस get_called_class का उपयोग करें:

$this->name = get_called_class(); 

यह शुरू की देर स्थिर बंधन सुविधाओं का हिस्सा है PHP 5.3 में। यह उस कक्षा के बजाए जिसे कक्षा परिभाषित किया जाता है, कहलाता है।

+2

शायद इसके लिए कोई आवश्यकता नहीं है (और निर्भरता के लिए> = 5.3 या तो), '__construct' वास्तव में एक स्थैतिक विधि नहीं है (इसकी '' $ 'तक पहुंच है) – lanzz

संबंधित मुद्दे