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