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 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥15 VB.NET2022如何生成发布成exe文件
  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!