我想创建一个继承(扩展)另一个PHP类的类,该类具有受保护的const,我想在我的扩展类中重写该类。
我创建了一个父类(该示例为A)和一个继承类(该示例为B)。定义class A了protected const(名为CST)。class B也会覆盖此const。
调用从display继承的A继承的方法类B时self::CST,打印的值是来自A的CST值,而不是B中覆盖的const CST。
我使用名为的静态属性观察到了相同的行为$var。
似乎self在方法中使用的总是引用定义类(在我的示例中为A),而不是用于调用静态方法的类。
class A
{
protected static $var = 1;
protected const CST = 1;
public static function printVar()
{
print self::$var . "\n";
}
public static function printCST()
{
print self::CST . "\n";
}
}
class B extends A
{
protected static $var = 2;
protected const CST =2;
}
A::printVar();
A::printCST();
B::printVar();
B::printCST();
有没有一种方法可以让我的静态方法printCST()在调用时显示2B::printCST()而无需重写该方法class B,从而提高OOP的代码可重用性?
胡子哥哥