对象常量的可见性

时间:2010-08-18 09:16:59

标签: php oop visibility constants

我发现PHP中的对象常量始终具有公共可见性,因此无法将它们设置为受保护或私有,如下所示:

<?php
class MyClass {
    protected const constant = "this won't work";
}
?>

对此有何解释?我想不出强迫常数公开的充分理由。

2 个答案:

答案 0 :(得分:4)

这是一个相当哲学的问题,在comments for Class constants in the PHP Manual中讨论过。争论似乎是 Visibility确定谁有权更改成员,而不是谁有权阅读。由于常量无法更改,因此当可见性被理解为访问修饰符时,让它们支持可见性是没有意义的。如果您遵循该论证或与the linked feature request below your question一起使用取决于您。

答案 1 :(得分:1)

  

我想不出强迫常数公开的充分理由。

嗯,常量是静态定义,绑定到而不是实例化的对象。它们只能使用classname::constname进行处理,并且不能更改。按理说它们是一个类蓝图的一部分,因此将可见性规则应用于它们并没有多大意义。

但这只是我的主观意见。有兴趣看看是否有任何基于硬OOP理论的东西出现了。