PHP:类中的静态Readonly属性
发布时间:2020-12-13 18:04:22 所属栏目:PHP教程 来源:网络整理
导读:今天是个好日子! 我的问题是:我需要在类中重载标准get和设置静态变量…但是在php中没有提供这样的功能…它在2008年被问到但仍未实现…同样适用于readonly … 我的问题:有没有办法让静态属性可以从外部读取,但是可以防止修改? echo aaa::$qwe; //--- echo
今天是个好日子!
我的问题是:我需要在类中重载标准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'; 它不是很好,但至少你可以说“我告诉过你”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |