扩展 PHP 静态类
我已经在这个领域挣扎了好几天,我已经得出了一个结论,但是既然结论不是我想要的,在我放弃之前,我会试着看看别人怎么说。信心最后死去...
假设我们有一个超类(称为“超级”)和一个子类(称为“子”)。
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扩展了Super,Sub现在将继承Super的所有方法,但是,它似乎只接收对Sub方法的引用。
我这样说是因为如果我打电话:
Sub::get_class_name();
输出是“超级”,而不是“子”。
如果我打电话给:
Sub::get_title();
同样,输出是“超级”的,我甚至在Sub中声明了$title。
因此,这意味着当我调用继承的静态函数时,该函数的作用域将是超类,而不是被调用的类(即使您打印回溯,它也将显示调用是在超类上进行的!!!),并且为了获取范围作为正在进行调用的子类, 我需要在该子类中重新声明该方法。好吧,这种方式违背了扩展类的目的,不是吗?
所以我的问题是,我是否可以扩展一个静态类,调用一个继承的方法并具有子类的作用域?或者至少能够识别它的类名?如果没有,我为什么要扩展静态类呢?
谢谢!