Hướng dẫn dùng constanr trong PHP

Cách khai báo, sử dụng hằng (constant) trong PHP

Hằng là gì ?

- Gần giống như biến, hằng (constant) được sử dụng để lưu trữ một giá trị đơn giản, tuy nhiên điểm khác biệt giữa hằng so với biến là hằng sẽ không thể thay đổi giá trị sau khi được xác định.

- Một tên hằng hợp lệ phải được bắt đầu bằng một chữ cái hoặc dấu gạch dưới, không có dấu $ phía trước tên hằng.

- Lưu ý: Không giống như các biến, mặc định các hằng sẽ có phạm vi toàn cục (global) trên toàn bộ tập lệnh.

Cách khai báo một “hằng” trong PHP

- Để tạo (khai báo) một hằng thì ta sử dụng hàm define() với cú pháp như sau:

define(name, value, case-insensitive)

- Dưới đây là bảng mô tả các tham số được sử dụng trong hàm define().

Tham sốMô tả
name - Tên hằng.
value - Giá trị của hằng.
case-insensitive

- Xác định việc có phân biệt trường hợp chữ IN HOA hay chữ thường đối với tên hằng hay không.

- Tham số này có thể nhận một trong hai giá trị:

  • TRUE - Không phân biệt.
  • FALSE - Có phân biệt (đây là giá trị mặc định)
<?php
	define("HTML", "Cách khai báo hằng"); //tên hằng CÓ phân biệt chữ hoa, chữ thường
	echo HTML; //ok
	echo html; //error
	define("CSS", "Cách sử dụng hằng", TRUE); //tên hằng KHÔNG phân biệt chữ hoa, chữ thường
	echo CSS; //ok
	echo css; //ok
?>

- Bạn cũng có thể dùng hằng để lưu trữ một mảng.

<?php
	define("Mobile", ["Nokia","HTC","Samsung"]);
	echo Mobile[1];
?>

Hằng là toàn cục

- Mặc định thì Hằng sẽ có phạm vi toàn cục, bạn có thể sử dụng nó ở bất kỳ vị trí nào trong tập lệnh mà không cần phải dùng đến từ khóa global.

- Hằng Hello có phạm vi toàn cục, nó có thể sử dụng bên trong hàm mess() mà không cần phải dùng đến từ khóa global.

<?php
	define("Hello", "Chào cả nhà");
	function mess(){
		echo Hello;
	}
	mess();
?>

Ta có thể định nghĩa hằng giá trị trong một lớp. Hằng được sử dụng như những biến thông thường của lớp, nhưng không sử dụng ký hiệu $ để tạo.

Giá trị mà một hằng chứa có thể là một biểu thức hằng, không là một biến, một thuộc tính hay một lời gọi hàm.

Phiên bản PHP 5.3.0, hằng sẽ tham chiếu tới lớp như việc sử dụng biến, tức là giá trị của biến không thể là một từ khóa (ví dụ như self, parent và static).

Ví dụ 1: Định nghĩa và sử dụng một hằng

<?php
class MyClass
{
    const 
CONSTANT 'constant value';

    function

showConstant() {
        echo  
self::CONSTANT "\n";
    }
}

echo

MyClass::CONSTANT "\n";

$classname "MyClass";
echo 
$classname::CONSTANT "\n"// As of PHP 5.3.0

$class = new MyClass();
$class->showConstant();

echo

$class::CONSTANT."\n"// As of PHP 5.3.0
?>

Ví dụ 2: Dữ liệu tĩnh

<?php
class foo {
    
// As of PHP 5.3.0
    
const BAR = <<<'EOT'
bar
EOT;
    
// As of PHP 5.3.0
    
const BAZ = <<<EOT
baz
EOT;
}

?>

Lưu ý:

Việc hỗ trợ khởi tạo hằng với cú pháp Heredoc và Nowdoc được thêm vào phiên bản PHP 5.3.0.

Ví dụ 3: Ví dụ về biểu thức hằng

<?php
const ONE 1;

class

foo {
    
// As of PHP 5.6.0
    
const TWO ONE 2;
    const 
THREE ONE self::TWO;
    const 
SENTENCE 'The value of THREE is '.self::THREE;
}

?>

Có thể cung cấp một biểu thức vô hướng liên quan đến các hoặc số và hằng chuỗi và/hoặc các hằng trong lớp.

Lưu ý:

Biểu thức hằng được hỗ trợ tại phiên bản PHP 5.6.0.

Hằng của interface

Interface cũng có hằng, hằng của nó làm việc giống như hằng của lớp ngoại trừ việc hằng không thể bị ghi đè bởi lớp/interface thừa kế interface đó.

Ví dụ sau thể hiện việc sử dụng hằng trong interface.

<?php
interface a
{
    const 
'Interface constant';
}

// In ra: Interface constant
echo a::b;

// Điều sau đây sẽ không được thực hiện bởi vì không cho phép ghi đè hằng.
class implements a
{
    const 
'Class constant';
}

?>

Tải thêm tài liệu liên quan đến bài viết Hướng dẫn dùng constanr trong PHP