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