PHP - 在类中定义常量
如何在类中定义一个常量,并使其仅在类上下文中调用时才可见?
....类似的东西Foo::app()->MYCONSTANT;
(如果被叫到喜欢被忽略)MYCONSTANT
如何在类中定义一个常量,并使其仅在类上下文中调用时才可见?
....类似的东西Foo::app()->MYCONSTANT;
(如果被叫到喜欢被忽略)MYCONSTANT
请参见类常量:
class MyClass
{
const MYCONSTANT = 'constant value';
function showConstant() {
echo self::MYCONSTANT. "\n";
}
}
echo MyClass::MYCONSTANT. "\n";
$classname = "MyClass";
echo $classname::MYCONSTANT. "\n"; // As of PHP 5.3.0
$class = new MyClass();
$class->showConstant();
echo $class::MYCONSTANT."\n"; // As of PHP 5.3.0
在这种情况下,自身回声会引发有关未定义常量的通知,并输出常量名称转换为字符串:。MYCONSTANT
"MYCONSTANT"
编辑 - 也许你正在寻找的是这个静态属性/变量:
class MyClass
{
private static $staticVariable = null;
public static function showStaticVariable($value = null)
{
if ((is_null(self::$staticVariable) === true) && (isset($value) === true))
{
self::$staticVariable = $value;
}
return self::$staticVariable;
}
}
MyClass::showStaticVariable(); // null
MyClass::showStaticVariable('constant value'); // "constant value"
MyClass::showStaticVariable('other constant value?'); // "constant value"
MyClass::showStaticVariable(); // "constant value"
这是一个老问题,但现在在PHP 7.1上,您可以定义恒定的可见性。
例
<?php
class Foo {
// As of PHP 7.1.0
public const BAR = 'bar';
private const BAZ = 'baz';
}
echo Foo::BAR . PHP_EOL;
echo Foo::BAZ . PHP_EOL;
?>
PHP 7.1 中上述示例的输出:
bar Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in …
注意:从 PHP 7.1.0 开始,类常量允许使用可见性修饰符。
更多信息请点击这里