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 这个四人抢答器代码哪儿有问题?仿真程序怎么写?
    • ¥15 burpsuite密码爆破
    • ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
    • ¥15 scikit安装之后import不了
    • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
    • ¥15 人脸识别相关算法 YOLO,AI等
    • ¥15 spark问题方便加V17675797079
    • ¥15 Python代码不打印的原因
    • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
    • ¥15 数学问题也不知道那种类型的问题