php类常量可见性

Poo*_*att 23 php class-constants

我们可以设置类常量的可见性吗?
对于这个例子:

class MyClass {
    const CONST_VALUE = 'A constant value';
}
Run Code Online (Sandbox Code Playgroud)

我们可以指定吗?

public const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud)

要么

private const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud)

要么

protected const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud)

Mor*_*ing 38

更新:常量的可见性修饰符已添加到PHP 7.1(2016年12月1日发布)中.请参阅RFC:支持类常量可见性.

语法如下所示:

class ClassName {
    private const PRIVATE_CONST = 0;
    protected const PROTECTED_CONST = 0;
    public const PUBLIC_CONST = 0;
}
Run Code Online (Sandbox Code Playgroud)

  • OP,考虑选择这个作为正确的答案,因为从 PHP 7.1.0 开始,@Alex 的答案不再正确 (2认同)

Ale*_*lex 14

PHP7.1开始,允许修饰符用于类常量,在以前的版本中,不可能在类中设置常量的可见性.他们总是公开的.有关详细信息,请参阅http://www.php.net/manual/en/language.oop5.constants.php上的注释.

  • 我从评论中发现了这一点..它帮助了......"为了避免任何人认为这在某种程度上是PHP中的遗漏,没有必要设置受保护或私有的常量.访问说明符可以识别谁有权*更改*成员,而不是谁有权阅读它们"**我确实认为这是一个遗漏.它们不仅是访问修饰符,而且还限制了可见性.事实上,我不能创造一个对我的班级来说是私人的常数,我认为这是一个问题.我会满足于私人const $ var ='me'等多个修饰符; 但这也是不允许的.** (3认同)