Ben şimdi gün boyunca bu alanda mücadele ettik ve ben bir sonuca ulaşmış, ancak sonuç pes önce ben, ne arıyordu değildi çünkü, ben diğer insanların ne söylediklerini görmek için çalışacağım. İnanç son ölür ...
Kullanıcının biz ("Super" olarak adlandırılır) bir üst sınıfı ve ("Alt" olarak adlandırılır) bir alt sınıfı var diyelim.
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';
}
Sub Süper, Sub şimdi Super metodlarının bütün miras, ancak sadece Sub yöntemlerine başvurularını almak gibi görünüyor uzanır yana Şimdi, muhtemelen beklenebilir.
Ben ararım çünkü eğer bu demek:
Sub::get_class_name();
çıktı "Alt", "Süper" ve değildir.
Ve ben diyebilir:
Sub::get_title();
yine çıktı "süper", ve hatta $ başlık Sub ilan var.
Yani bu, ben bir miras statik işlevini çağırdığınızda, işlevin kapsamı süper sınıfı, çağırdı bir (Eğer geri izleme yazdırmak bile, çağrı üst sınıftan yapılmış olduğunu göstereceğim!) Olacağı anlamına gelir ve çağrı üzerine yapılıyor alt sınıfı olarak kapsamını elde etmek için, o alt sınıfın içinde bu yöntemi redeclare gerekir. Well this kind of defeats the purpose of extending classes, don't it?
So my question is, can I ever extend a static class, call one of the inherited methods and have the subclass's scope? or at least to be able to identify it's classname? And if not, why would I ever want to extend static classes?
Teşekkürler!