Ich hatte nun schon öfter das Vergnügen, den Klassennamen eines Objektes in der abstrakten Elternklasse zu benötigen.
Dies ist zum Beispiel erforderlich, um eine statische Methode, aus einer Methode der abstrakten Klasse heraus, auf der konkreten Klasse aufzurufen.
Zunächst hatte ich die Idee dies über die magische Konstante __CLASS__ zu lösen. Sinnvollerweise (keine Ironie) liefert diese allerdings den Namen der abstrakten Klasse, in der die Methode steht zurück.
Also hier die Lösung, wie man das ganze sinnvoll mit etwas Verstand lösen kann, nämlich einfach per "get_class($this)":
abstract class AbstractTest {
public function getClassname1(){
return __CLASS__;
}
public function getClassname2(){
return get_class($this);
}
}
class Test extends AbstractTest {
}
$test = new Test();
echo $test->getClassname1(); //Ergebnis: "AbstractTest"
echo $test->getClassname2(); //Ergebnis: "Test"
?>
Viel Spaß damit!