如何保护类属性免于扩展 PHP 中的类?

发布于 2024-11-05 20:56:08 字数 283 浏览 0 评论 0原文

是否可以做这样的事情:

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

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

bar returns null...

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

私有属性不提供我正在寻找的功能。

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

Is it possible to do something like this:

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

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

bar returns null...

I'd really like it if the variable $private wasn't accessible by the child classes, but I'm unsure that it's even possible based simply on the paradigm of classed based development.

Private properties DO NOT provide the functionality I'm looking for.

I understand that this isn't accurate PHP code, but it's just an example ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深府石板幽径 2024-11-12 20:56:08

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

属性或方法的可见性可以通过在声明前加上关键字 public、protected 或 private 来定义。声明为 public 的类成员可以在任何地方访问。声明为 protected 的成员只能在类本身内部以及继承类和父类中访问。 声明为私有的成员只能由定义该成员的类访问

请参阅此处的示例:http://codepad.org/Yz4yjDft

私有属性不提供我正在寻找的功能。

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

This is how it already works. See the documentation:

The visibility of a property or method can be defined by prefixing the declaration with the keywords public, protected or private. Class members declared public can be accessed everywhere. Members declared protected can be accessed only within the class itself and by inherited and parent classes. Members declared as private may only be accessed by the class that defines the member.

See an example here: http://codepad.org/Yz4yjDft

Private properties DO NOT provide the functionality I'm looking for.

To me seems it is exactly what you want. If not, please elaborate.

千と千尋 2024-11-12 20:56:08
class foo {
    protected $private = 'A';
}

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

// will echo 'A' 

您只需要在函数内进行处理,就不能在类内有 echo 。

编辑:

受保护将允许您仅在后代类中使用该变量。如果这就是您正在寻找的

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

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

// will echo 'A' 

You just need to do your processing inside a function, you can't have echo just inside you class.

EDIT:

protected will let you use the variable only in descendent classes. if that is what you are looking for

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文