PHP 类常量 - 公共、私有还是受保护?

2022-08-30 10:32:55

我假设 const 属性自动是公开的,我说得对吗?有没有办法使它们成为私人或受保护的?

提前致谢。


答案 1

从历史上看,只要类被加载,类常量总是可以公开访问的,并且没有办法改变这一点。

从 PHP 7.1 开始,它们默认保持公共状态,但现在可能会应用访问修饰符。以下是发行说明中的示例:

<?php
class ConstDemo
{
    const PUBLIC_CONST_A = 1;
    public const PUBLIC_CONST_B = 2;
    protected const PROTECTED_CONST = 3;
    private const PRIVATE_CONST = 4;
}

答案 2

类常量应该具有私有/受保护的选项,因为公共会公开类的内部详细信息,其他类/代码可能会错误地使用它们,因为它们是公共的。

很高兴知道更改私有常量只会影响它所定义的类。不幸的是,我们没有这个选择。

还记得你学习对象设计与分析的时候吗?你为类方法和属性提供了最严格的访问,然后根据需要放宽它们(更难以另一种方式返回,因为其他类/代码开始使用它们,然后破坏其他代码)。

解决方法

最好的办法是创建一个私有或受保护的变量,并将其大写以显示它是一个常量。你总是可以创建一个名为constant($value_to_be_constant)的类,它实现正确的魔术方法/ spl接口,以防止它被更改。


推荐