Heyho!
Der Titel ist nicht ganz korrekt: Eigentlich meine ich,
Wie rufe ich eine statische Methode einer Klasse auf, die diese statische Methode von einer abstrakten Klasse aufgezwungen bekommt? Der Haken ist, der Aufruf soll aus der abstrakten Klasse erfolgen - die ja zum Implementierungszeitpunkt noch nicht ihre konkreten erbenden Klassen kennt.
Code-Bsp (nur schnell dahingetippt, muss nicht funktionieren):
abstract class AbstrakteKlasse {
public function eineObjektMethode() {
XXX::eineAbstrakteStatischeMethode();
}
abstract public static function eineAbstrakteStatischeMethode();
}
class Weihnachten extends AbstrakteKlasse {
public static function eineAbstrakteStatischeMethode() {
echo("Bald ist Weihnachten");
}
}
class Ostern extends AbstrakteKlasse {
public static function eineAbstrakteStatischeMethode() {
echo("Bald ist Ostern");
}
}
$w = new Weihnachten();
$w->eineObjektMethode(); // Soll "Bald ist Weihnachten" ausgeben
Der Aufruf müsste ja jetzt eigentlich anstelle des "XXX" "Weihnachten" haben, also Weihnachten::eineAbstrakteStatischeMethode();
Nur wie komm ich an "Weihnachten"?
__CLASS__::eineAbstrakteStatischeMethode(); ists nicht, war mal so'n Versuch ohne groß zu wissen obs Sinn macht
Auch $self::eineAbstrakteStatischeMethode(); wirf die lustige "unexpected T_PAAMAYIM_NEKUDOTAYIM"-Fehlermeldung aus
Jemand ne andere Idee?
Gruß
Mastershrimp