Php 简明教程

PHP – Class Constants

PHP 允许将类中的标识符定义为具有常量值的“类常量”,它在每个类基础上保持不变。为了与类中的变量或属性区分开来,该常量的名称没有前缀通常的“$”符号,并由“const”限定符定义。请注意,PHP 程序还可以使用 define() 函数创建全局常量。

常量的默认可见性是公共的,尽管可以在定义中使用其他修饰符。常量的值必须是一个表达式,而不是变量、函数调用或属性。常量值通过作用域解析运算符通过类名进行访问。在方法中,可以通过 self 变量引用它。

class SomeClass {
   const CONSTANT = 'constant value';
}
echo SomeClass::CONSTANT;

Constant names are case sensitive 。传统上,常量的名称使用大写字母。

Example

此示例显示了如何定义和访问类常量:

<?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();
?>

它将生成以下 output

PI=3.1415926535898
area=78.539816339745

Class Constant as Expression

在这个示例中,类常量被分配一个表达式 -

<?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();
?>

它将生成以下 output

PI=3.1428571428571
area=78.571428571429

Class Constant Visibility Modifiers

请看以下示例:

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

它将生成以下 output

public=10
PHP Notice:  Undefined property: example::$Y in  line 11

private=
PHP Fatal error:  Uncaught Error: Cannot access private const example::Y