抽象基类无法访问派生类的私有成员?

时间:2014-07-21 13:11:37

标签: php oop inheritance abstract-class

我有一个抽象类Entity。我有一个继承实体类的Person。但我的类Entity无法访问类Person的私有成员。我该怎么做呢?

<?php
abstract class Entity
{
    public function view()
    {
        echo $name; //Fatal Error. Can't Access
    }
}
class Person extends Entity
{
    private $name;
}

1 个答案:

答案 0 :(得分:3)

$nameprivate,因此仅在Person课程中提供。尝试制作protected。然后从Entity班级,使用static::$name;

访问它

请注意static关键字的使用。这是后期静态绑定的一个例子。简单来说,它意味着使用属于派生子的值。

请记住,根据您正在建模的对象,将$name属性放在Entity中可能更有意义,以便所有其他子类也具有该属性,而不是重新声明它每一次。然后,您将使用$this->name;

在子课程中访问它