【问题标题】:inheriting properties in php继承php中的属性
【发布时间】:2011-06-13 06:19:32
【问题描述】:

我有一个超类,其中包含用于设置它们的属性和方法

class Super{
    private $property;

    function __construct($set){
        $this->property = $set;
    }
}

那么我有一个需要使用该属性的子类

class Sub extends Super{
    private $sub_property

    function __construct(){
        parent::__construct();
        $this->sub_property = $this->property;
    }
}

但我不断收到错误

Notice: Undefined property: Sub::$property in sub.php on line 7

我哪里错了?

【问题讨论】:

标签: php oop inheritance properties


【解决方案1】:

您还需要指定子类从超类扩展:

class Sub extends Super {
   // code
}

【讨论】:

  • 我的错,代码中已经是这样了,已编辑问题以反映这一点
【解决方案2】:

您需要将您的 $sub_property 设为受保护而不是私有。

【讨论】:

    【解决方案3】:

    错误是说它试图找到一个名为 $property 的局部变量,该变量不存在。

    如您所愿,要在对象上下文中引用 $property,您需要 $this 和箭头。

    $this->sub_property = $this->property;
    

    其次,上面的行将按原样失败,因为$propertyprivateSuper 类。改为protected,这样就可以继承了。

    protected $property;
    

    第三,(感谢 Merijn,我错过了),Sub 需要扩展 Super。

    class Sub extends Super
    

    【讨论】:

    • 如果你这样编辑你的问题会很混乱。以后,请接受答案或编辑您的问题,但添加显示您的解决方案的新代码。
    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2014-02-03
    • 2012-05-08
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多