2016 年 11 月 14 日 - 注释由 sobak 更新
-----
常量和 PHP 类定义
在类定义内使用 "define('MY_VAR', 'default value')" 不会按预期工作。您必须使用 PHP 关键字 'const' 并立即使用标量值(布尔值、整数、浮点数、字符串(或 PHP 5.6+ 中的数组))对其进行初始化。
<?php
define('MIN_VALUE', '0.0'); // 正确 - 在类定义之外工作。
define('MAX_VALUE', '1.0'); // 正确 - 在类定义之外工作。
//const MIN_VALUE = 0.0; 正确 - 在类定义内外均可工作。
//const MAX_VALUE = 1.0; 正确 - 在类定义内外均可工作。
class Constants
{
//define('MIN_VALUE', '0.0'); 错误 - 在类定义之外工作。
//define('MAX_VALUE', '1.0'); 错误 - 在类定义之外工作。
const MIN_VALUE = 0.0; // 正确 - 在类定义内工作。
const MAX_VALUE = 1.0; // 正确 - 在类定义内工作。
public static function getMinValue()
{
return self::MIN_VALUE;
}
public static function getMaxValue()
{
return self::MAX_VALUE;
}
}
?>
示例 1
您可以像这样直接访问这些常量
* 准确地键入类名。
* 键入两个 (2) 个冒号。
* 准确地键入常量名。
示例 2
由于我们的类定义提供了两个 (2) 个静态函数,因此您也可以像这样访问它们
* 准确地键入类名。
* 键入两个 (2) 个冒号。
* 准确地键入函数名(带括号)。
<?php
# 示例 1:
$min = Constants::MIN_VALUE;
$max = Constants::MAX_VALUE;
# 示例 2:
$min = Constants::getMinValue();
$max = Constants::getMaxValue();
?>
一旦类常量被声明并初始化,就不能将它们设置为不同的值——这就是为什么类定义中没有 setMinValue() 和 setMaxValue() 函数——这意味着它们是只读的和静态的(由类的所有实例共享)。