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+

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

报告相同问题?

悬赏问题

  • ¥50 手写签名不能上传的问题
  • ¥30 linux odbc怎么添加gbase数据库
  • ¥20 电脑开机黑屏,只有一个鼠标,联想zj者y7000
  • ¥20 DXSDK_jun10
  • ¥20 请问这种量表怎么用spss量化分析(作为中介模型的因变量
  • ¥55 AD844 howland电流源如何驱动大额负载
  • ¥15 C++ /QT 内存权限的判断函数列举
  • ¥15 深度学习GFnet理解问题
  • ¥15 单细胞小提琴堆叠图代码
  • ¥50 升级strust2版本到2.3.15.1后使用ognl3.0.6.jar windows环境中没有问题,但部署到linux环境报错