Bol*_*ock 40
从历史上看,只要类被加载并且无法改变它,类常量总是可公开访问.
从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;
}
Run Code Online (Sandbox Code Playgroud)
小智 18
类常量应该有被私人选项/保护,因为是公开暴露了其他类/代码错误的使用思维类的内部细节,他们都OK使用,因为它们是公开的.
这将是很高兴知道,改变一个私人不变只会影响它在定义的类.不幸的是,我们没有这样的选择.
回想一下当你学习对象设计和分析时...你给类方法和属性最可能的限制访问,然后根据需要放松它们(更难以回到另一个方向,因为其他类/代码开始使用它们然后会打破其他代码).
替代方法
最好的办法是创建一个私有或受保护的变量,大写它以显示它是一个常量.您始终可以创建一个名为constant($ value_to_be_constant)的类,该类实现正确的魔术方法/ spl接口以防止其被更改.
我知道这个问题是6岁
Php 7.1(当前为RC1)允许指定类常量的可见性.
class Token {
// Constants default to public
const PUBLIC_CONST = 0;
// Constants then also can have a defined visibility
private const PRIVATE_CONST = 0;
protected const PROTECTED_CONST = 0;
public const PUBLIC_CONST_TWO = 0;
//Constants can only have one visibility declaration list
private const FOO = 1, BAR = 2;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13418 次 |
| 最近记录: |