Estendendo classes estáticas do PHP

Eu tenho lutado nessa área há dias, e cheguei a uma conclusão, mas como a conclusão não era a que eu estava procurando, antes de desistir, tentarei ver o que as outras pessoas dizem. Fé morre por último ...

Digamos que temos uma superclasse (chamada "Super") e uma subclasse (chamada "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';
}

Agora, você provavelmente esperaria que desde que Sub estenda Super, esse Sub agora herdaria todos os métodos de Super, no entanto, parece receber apenas referências aos métodos do Sub.

Eu digo isso porque se eu ligar:

Sub::get_class_name();

a saída é "Super" e não "Sub".

E se eu ligar:

Sub::get_title();

novamente, a saída é "super", e eu até tenho o $ title declarado em Sub.

Então isso significa que quando eu chamo uma função estática herdada, o escopo da função será a superclasse, não aquela chamada (mesmo se você imprimir o backtrace, ele mostrará que a chamada foi feita na superclasse !!!), e para obter o escopo como a subclasse na qual a chamada está sendo feita, preciso redeclarar esse método dentro dessa subclasse.Bem, isso acaba com o propósito de estender classes, não é?

Então, minha pergunta é: eu posso estender uma classe estática, chamar um dos métodos herdados e ter o escopo da subclasse? ou pelo menos para poder identificar seu nome de classe? E se não, por que eu iria querer estender as classes estáticas?

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion