getter 是防止公共属性发生更改的唯一方法吗?

发布于 2025-01-04 02:24:17 字数 280 浏览 0 评论 0原文

可能的重复:
PHP 只读属性?

我希望属性公开可见:

echo $object->; prop;

但我不想被修改。

除了使用 __get 之外,还有其他选项可以实现这一点吗?

Possible Duplicate:
PHP Readonly Properties?

I want a property to be publicly visible:

echo $object->prop;

but I don't want to be modifiable.

Are there other options to make this happen, besides using __get?

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

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

发布评论

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

评论(2

雨落□心尘 2025-01-11 02:24:17

除了使用 __get 之外,还有其他选择可以实现这一点吗?

否,但有功能请求:https://bugs.php.net/bug .php?id=46506 所以你可以投票支持它的重要性,并希望这个问题能在不久的将来得到解决。

但我认为这不会在不久的将来,因为这个功能会造成很多混乱,就像存储在属性中的对象一样 - 它们只是对对象的引用,因此使它们可见可以让您对其方法/属性进行操作。

就目前而言,为每个您想要只读的属性创建适当的 getter 似乎是最好的解决方案。

Are there other options to make this happen, besides using __get?

No, but there is feature request for it: https://bugs.php.net/bug.php?id=46506 so you can vote for importance of it and hope that this will be resolved in near future.

But I don't think it will be near future since this feature will create a lot of confusion, like objects stored in properties - they are only references to the object, so making them visible allows you to operate on it's methods / properties.

As for now, creating proper getter for every property, that you want to be read-only, seems to be the best solution.

七七 2025-01-11 02:24:17

我能想到的其他方法:

  1. 使用 __set() 函数并忽略设置。
  2. 根本不使用该变量,而是创建一个 getVal() 函数,而不创建 setVal() 函数。

希望这有帮助:)

Other ways I can think of:

  1. Use a __set() function and ignore the setting.
  2. Don't use that variable at all, but create a getVal() function, and no setVal() function.

Hope this helps :)

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