Erweiterung der statischen PHP-Klassen

Ich habe seit Tagen Probleme in diesem Bereich und bin zu einem Schluss gekommen, aber da der Schluss nicht das war, wonach ich gesucht habe, bevor ich aufgebe, werde ich versuchen zu sehen, was andere Leute sagen. Glaube stirbt zuletzt ...

Nehmen wir an, wir haben eine Superklasse (genannt "Super") und eine Unterklasse (genannt "Sub").

class Super {
    protected static $title = 'super';
    public static function get_class_name()        
    {
        echo __CLASS__;
    }
    public static function get_title()
    {
        echo self::$title;
    }
}
class Sub extends Super {
    protected static $title = 'sub';
}

Nun, da Sub Super erweitert, würde man wahrscheinlich erwarten, dass Sub nun alle Methoden von Super erbt, es scheint jedoch nur Verweise auf die Methoden des Sub zu erhalten.

Ich sage das, weil wenn ich anrufe:

Sub::get_class_name();

Die Ausgabe ist "Super" und nicht "Sub".

Und wenn ich anrufe:

Sub::get_title();

wieder ist die Ausgabe "super" und ich habe sogar den $ title in Sub deklariert.

Wenn ich also eine geerbte statische Funktion aufrufe, ist der Gültigkeitsbereich der Funktion die Superklasse und nicht die aufgerufene (selbst wenn Sie die Rückverfolgung drucken, wird angezeigt, dass der Aufruf in der Superklasse erfolgt ist !!!). und um den Gültigkeitsbereich als Unterklasse zu erhalten, für die der Aufruf ausgeführt wird, muss ich diese Methode innerhalb dieser Unterklasse neu deklarieren.Nun, diese Art von Niederlage hat den Zweck, Klassen zu erweitern, nicht wahr?

Meine Frage lautet also: Kann ich jemals eine statische Klasse erweitern, eine der geerbten Methoden aufrufen und den Gültigkeitsbereich der Unterklasse haben? oder zumindest um den Klassennamen identifizieren zu können? Und wenn nicht, warum sollte ich jemals statische Klassen erweitern wollen?

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage