PHP – 类常量



PHP 允许在类中定义一个标识符作为“类常量”,其值在每个类中保持不变。为了与类中的变量或属性区分开来,常量的名称前面不加通常的“$”符号,并使用“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

类常量作为表达式

在此示例中,类常量被赋予一个表达式:

<?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

类常量可见性修饰符

请看以下示例:

<?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
广告