drf65218 2016-11-02 04:15
浏览 23
已采纳

PHP从父级访问Child的受保护值

I have this code that i want to do method abstraction in parent and child will define the property

class SuperClass{
    static protected $message = "This is the parent";

    public static function showMessage(){
        echo self::$message."<br/>";
    }
}

class SubClass1 extends SuperClass {
    static protected $message = "This is the first child";

}

class SubClass2 extends SuperClass {
    static protected $message = "This is the second child";
}

SuperClass::showMessage();
SubClass1::showMessage();
SubClass2::showMessage();

I would expect to see

This is the parent
This is the first child
This is the second child

But what i got is

This is the parent
This is the parent
This is the parent
  • 写回答

1条回答 默认 最新

  • dongtan9253 2016-11-02 04:23
    关注

    This is a very classical use-case of late static binding. Simply replace keyword "self" in the parent class by "static"

    class SuperClass{
        static protected $message = "This is the parent";
    
        public static function showMessage(){
            echo static::$message."<br/>";
        }
    }
    

    This will work for php 5.3+

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器