PHP – Class Constants

PHP cho phép một định danh trong một lớp được định nghĩa là "hằng số lớp" với giá trị hằng, giá trị này không thay đổi theo từng lớp. Để phân biệt với một biến hoặc thuộc tính trong lớp, tên của hằng số không được thêm ký hiệu "$" thông thường và được định nghĩa bằng từ khóa "const". Lưu ý rằng một chương trình PHP cũng có thể có một hằng số toàn cục được tạo ra bằng cách sử dụng hàm define() .

Tính khả dụng mặc định của một hằng số là công khai (public), mặc dù có thể sử dụng các bộ sửa đổi khác trong định nghĩa. Giá trị của một hằng số phải là một biểu thức và không phải là một biến, cũng như không phải là một cuộc gọi hàm/thuộc tính. Giá trị của một hằng số được truy cập thông qua tên lớp bằng cách sử dụng toán tử phân giải phạm vi. Tuy nhiên, bên trong một phương thức, nó có thể được tham chiếu thông qua biến self .

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

Constant names are case sensitive . Theo quy ước, tên của các hằng số được viết bằng chữ hoa.

Example

Ví dụ này cho thấy cách một Hằng số Lớp được định nghĩa và truy cập -

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

Nó sẽ tạo ra output

PI=3.1415926535898
area=78.539816339745

Class Constant as Expression

Trong ví dụ này, hằng số lớp được gán một biểu thức −

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

Nó sẽ tạo ra output

PI=3.1428571428571
area=78.571428571429

Class Constant Visibility Modifiers

Hãy xem xét ví dụ sau đây −

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

Nó sẽ tạo ra output

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

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