如何保护类属性不会在PHP中扩展类?

时间:2011-05-08 01:52:10

标签: php class visibility private class-visibility

是否可以做这样的事情:

class foo {
    private $private = 'A';
}

class bar extends foo {
    echo $this->private;
}

bar returns null...

如果子类无法访问变量$ private,我真的很喜欢它,但我不确定它甚至可能仅基于基于分类的开发的范例。

私有财产不提供我正在寻找的功能。

我知道这不是准确的PHP代码,但它只是一个例子;)

2 个答案:

答案 0 :(得分:2)

这就是它已经运作的方式。请参阅documentation

  

可以通过在声明前加上关键字public,protected或private来定义属性或方法的可见性。声明为public的类成员可以随处访问。声明受保护的成员只能在类本身以及继承和父类中访问。 声明为私有的成员只能由定义成员的类访问。

请在此处查看示例:http://codepad.org/Yz4yjDft

  

私有财产不提供我正在寻找的功能。

对我来说,这似乎正是你想要的。如果没有,请详细说明。

答案 1 :(得分:0)

class foo {
    protected $private = 'A';
}

class bar extends foo {
    function __construct() {
        echo $this->private;
    }
}
 new bar();

// will echo 'A' 

你只需要在一个函数内部进行处理,你就不能在你的课堂内进行回音。

编辑:

protected将允许您仅在后代类中使用该变量。如果这就是你要找的东西