PHP 允许将类中的标识符定义为具有常量值的“类常量(Class Constants)”,该常量在每个类的基础上保持不变。为了与类中的变量或属性区分开来,常量的名称不以通常的 “$” 符号为前缀,而是使用 “const” 限定符定义。
请注意,PHP 程序也可以使用 define() 函数创建全局常量。
常量的默认可见性为 public,但定义中可能会使用其他修饰符。常量的值必须是表达式,而不是变量,也不是函数调用/属性。常量的值是使用范围解析运算符通过类名访问的。不过,在方法中,它可以通过 self 变量来引用。
class SomeClass {
const CONSTANT = 'constant value';
}
echo SomeClass::CONSTANT;
注意:常量名称区分大小写。通常,常量的名称为大写。
示例
此示例显示了如何定义和访问 类常量 -
<?php
class square {
const PI=M_PI;
var $side=5;
function area() {
$area=$this->side**2*self::PI;
return $area;
}
}
$s1=new square();
echo "PI=". square::PI . "\n";
echo "area=" . $s1->area();
?>
将产生以下输出 -
PI=3.1415926535898
area=78.539816339745
area=78.539816339745
类常量作为表达式
在此示例中,为类常量分配了一个表达式 -
<?php
const X = 22;
const Y=7;
class square {
const PI=X/Y;
var $side=5;
function area() {
$area=$this->side**2*self::PI;
return $area;
}
}
$s1=new square();
echo "PI=". square::PI . "\n";
echo "area=" . $s1->area();
?>
将产生以下输出 -
PI=3.1428571428571
area=78.571428571429
area=78.571428571429
类常量可见性修饰符
请看下面的例子 -
<?php
class example {
const X=10;
private const Y=20;
}
$s1=new example();
echo "public=". example::X. "\n";
echo "private=" . $s1->Y ."\n";
echo "private=" . example::Y ."\n";
?>
将产生以下输出 -
public=10
PHP Notice: Undefined property: example::$Y in line 11
private=
PHP Fatal error: Uncaught Error: Cannot access private const example::Y
PHP Notice: Undefined property: example::$Y in line 11
private=
PHP Fatal error: Uncaught Error: Cannot access private const example::Y