php class constant visibility
我们可以设置类常量的可见性吗? 对于前php class constant visibility
class MyClass {
const CONST_VALUE = 'A constant value';
}
该类CANWE写
public const CONST_VALUE = 'A constant value';
或
private const CONST_VALUE = 'A constant value';
或
protected const CONST_VALUE = 'A constant value';
不,它不是可以设置在常量的知名度一个类。他们总是公开的。有关更多信息,请参阅http://www.php.net/manual/en/language.oop5.constants.php的评论。
我从评论中找到了它..它帮助..“免得有人认为这是某种遗漏在PHP中,保护或私有常数是毫无意义的,访问说明符标识谁有权*更改*成员,而不是谁有权阅读它们“ **我确实认为这是一个遗漏。它们不仅是访问修饰符,还会限制可见性。事实上,我无法对我的班级保持一种私人的,我认为这是一个问题。我会解决像多个修改器像私人常量$ var ='我';但这也是不允许的。** – 2011-03-17 13:39:52
修饰符不允许用于php中的常量。 您可以使用
public static $variable = "abc";
但遗憾的是final
这里不允许使用。
另一种方法是使用恒定方法,例如,
private static function gravitationalConstant() {
return 9.81;
}
这个成语是基于C编程不太熟悉,但就是Smalltalkers(谁没有在他们的语言常量)很熟悉。总的来说,我并不倾向于在Java中使用它,因为它对语言来说不那么惯用。但是,如果您需要用计算值替换简单返回,那么值得将常量字段更改为常量方法。 (我猜应该有一个重构...)
更新:常量的可见性修饰符已添加到PHP 7.1(2016年12月1日发布)。请参阅RFC:Support Class Constant Visibility。
的语法如下:
class ClassName {
private const PRIVATE_CONST = 0;
protected const PROTECTED_CONST = 0;
public const PUBLIC_CONST = 0;
}
OP,考虑选择这个作为正确的答案,因为@Alex中的一个在PHP 7.1.0中不再是真实的 – thexpand 2017-11-29 09:21:40
在PHP最新版本(7.1.0 PHP),它会提供。
示例语法就像。
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;
}
请注意,PHP提供了一个用于提供类常量可见性的RFC,请参见[PHP RFC:支持类常量可见性](https://wiki.php.net/rfc/class_const_visibility)。 – 2015-10-07 17:21:24
不,这种语言功能不存在(,但)。它基本上是被称为“常量作为具有访问级别的变量”的Java特性。在这个答案中,您可以在“类常量可见性”RFC(请参阅上面的注释)中找到关于此语言功能的更多信息:http:// *。com/a/27762041/1163786和合并请求:https://github.com/php/php-src/pull/1494 – 2015-10-21 19:34:40