Olaf Schneider: Klassenname von abgeleiteter Klasse in statischer Methode

Beitrag lesen

Hallo,

folgender Testcode:

  
<?php  
  
abstract class Foo {  
   public final static function getClassname() {  
      return get_class();  
   }  
}  
  
class Bar1 extends Foo {}  
class Bar2 extends Foo {}  
  
echo Bar1::getClassname();  
  
?>  

Ich möchte von der abstrakten Klasse Foo mehrere konkrete Klassen wie z.B. Bar1 ableiten. In der Klasse Foo soll später eine Fabrik dann über den Aufruf Bar1::getInstance() ein Objekt der Klasse Bar1 zurückgeben. Um dieses zu tun, muss allerdings die statische Methode Foo::getInstance() wissen, mittels welcher Klasse sie aufgerufen wurde.

Das obrige Beispiel gibt (erwartungsgemäß) „Foo“ zurück. Gibt es eine Möglichkeit, in der MethodeFoo::getClassname den Namen der Unterklasse Bar1 zu erhalten, ohne diesen explizit aus jeder Unterklasse als Stringliteral zu übergeben?

Viele Grüße
Olaf Schneider