PHP:类中的静态Readonly属性

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP:类中的静态Readonly属性脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
今天是个好日子!

我的问题是:我需要在类中重载标准get和设置静态变量…但是在PHP中没有提供这样的功能…它在2008年被问到但仍未实现…同样适用于readonly …

我的问题:有没有办法让静态属性可以从外部读取,但是可以防止修改

echo aaa::$qwe; //<--- echoes value of $qwe
aaa::$qwe = '666'; //<--- throws an error because variable is protected from modification

我不能使用const,因为一些变量包含数组.

也许有一些解决方法

是的,我知道我可以把它变成aaa :: Get(‘qwe’),但这并不好……

直接回答您的问题:不,您不能将常规属性标记为只读.如果你想设置基本类型(数组除外),那将永远不会改变,你应该使用常量
const QWE = '666';

这对于对象和数组不起作用.我看到两个(让我们说)“解决方案”

>使用Getter

private $qwe;
public function getQwe() { return $this->qwe; }
protected function setQwe($value) { $this->qwe = $value; }

我不太喜欢它们(“属性定义状态,而不是行为,就像方法一样”).你总是得到两倍于属性的额外方法,如果你有很多属性,这将极大地炸毁你的课程.但是,据我所知,实现您想要实现的目标的唯一方法就是这样.
>相信你的用户;)评论你的财产,并说出“如果你改变这个价值,可能会有什么东西会破坏,这是你自己的错”.

/**
 * QWE
 *
 * This property should be treatened as "readonly". If you change this value
 * something scary will happen to you.
 *
 * @readonly
 * @var string
 */
public $qwe = '666';

它不是很好,但至少你可以说“我告诉过你”.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP:类中的静态Readonly属性全部内容,希望文章能够帮你解决PHP:类中的静态Readonly属性所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: