Php 对象常量的可见性
我发现PHP中的对象常量始终具有公共可见性,因此无法将它们设置为受保护或私有,如下所示:Php 对象常量的可见性,php,oop,visibility,constants,Php,Oop,Visibility,Constants,我发现PHP中的对象常量始终具有公共可见性,因此无法将它们设置为受保护或私有,如下所示: <?php class MyClass { protected const constant = "this won't work"; } ?> 我想不出一个好的理由强迫常数公开 常量是静态定义,绑定到类,而不是实例化对象。只能使用classname::constname对其进行寻址,并且不能对其进行更改。它们是类蓝图的一部分,因此对它们应用可见性规则是没有意义的 不过,这只是我的主
<?php
class MyClass {
protected const constant = "this won't work";
}
?>
我想不出一个好的理由强迫常数公开
常量是静态定义,绑定到类,而不是实例化对象。只能使用classname::constname
对其进行寻址,并且不能对其进行更改。它们是类蓝图的一部分,因此对它们应用可见性规则是没有意义的
不过,这只是我的主观看法。有兴趣看看是否有基于硬OOP理论的东西出现 这是一个相当哲学化的问题,这一问题将在。争论似乎是确定谁有权更换成员,而不是谁有权阅读成员。因为常量不能更改,所以当可见性被理解为访问修饰符时,让它们支持可见性是没有意义的。你是否遵循这一论点或是否遵循这一论点取决于你。Hmm,静态类成员也应该按照这一定义公开吗?(相关)@Pekka是的,我还没有决定遵循哪一个。我可以看出常数具有可见性的用途,但再一次,我从来没有强烈感觉到这一点。常量是常量,如果我需要可见性,我就使用属性。是的,我也认为这两种方式都没什么大不了的(尽管这很有趣)。但“可见性控制写作权”的论点对我来说毫无意义。对我来说,这听起来完全不对。