为了账号安全,请及时绑定邮箱和手机立即绑定

PHP静态属性和const覆盖

PHP静态属性和const覆盖

PHP
LEATH 2021-04-26 22:25:04
我想创建一个继承(扩展)另一个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的代码可重用性?
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

达曼(Dharman)建议使用static::CST代替self::CST

这是解决我的问题的方法。


查看完整回答
反对 回复 2021-05-07
  • 1 回答
  • 0 关注
  • 193 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信